FrankenStack Recap — FSE Meetup, Oct ‘17
A few months ago, I became a co-organizer of the Full Stack Engineering Meetup, a growing community of 3200 engineers and technology enthusiasts. The group has always been run and sponsored by Greenhouse. It started back in November 2013 in the co-working space we used to occupy. Now we host many of the Meetups in our office near Union Square, and we also take the show on the road. This month’s event was hosted at Button.
Here’s a quick recap of this month’s event — FrankenStack…
Antoine Leclercq on Workerholic
Antoine Leclercq discussed his work on a background job processor he built in Ruby — Workerholic (I love the name). It’s open source, so go check it out and contribute! He took a deep dive into his approach, how it handles different types of jobs, and how it benchmarks against the industry standard Sidekiq. Hint: it’s faster! One of the more recent features I was working on for Greenhouse Onboarding involved introducing Sidekiq into our application, so it was pretty interesting to get a deep dive into the inner-workings of a background job processor. The biggest lesson I learned was the massive processing improvement by serializing data using JSON rather than YAML. Antoine noticed this in his benchmarking, made the switch from YAML, and saw a 55% improvement in processing time.
Jimmy McGill on Terraform
Jimmy McGill, Button’s VP of Engineering, gave a fascinating and entertaining talk on his team’s use of Terraform. Here’s a link to his slides. First thing I learned? Jimmy is hilarious (and I just want to listen to more of his talks). Beyond that — the high level differences between procedural versus declarative code to manage infrastructure. In short, procedural code is a bunch of shell scripts that are run on boxes that you SSH into. Declarative code on the other hand let’s you describe what you want your infrastructure to be at the end of the process.
One of the main issues with procedural code for building infrastructure is that it’s not much smarter than a shell script. If you forget an
if statement somewhere, you can end up with duplicate infrastructure and begin monitoring the wrong system. Procedural code can be idempotent, but there’s no guarantee — it’s up to the developer to make sure of this. And, you know, developers maybe sometimes possibly make mistakes?
Terraform helps solve this problem. Because you’re describing what you want the end result to be, running
create all the things a million times will only create that thing once. Another awesome feature is
terraform plan. Let’s say you make changes to your Terraform code. Running
terraform plan will show you the difference between what is currently in production, and what would be modified if you deployed your changes.
Hope this has been helpful for those that weren’t able to make it! Look out for next month’s event — Stacksgiving.