Inside the DevOps Toolchain This Team Swears By

How Handshake goes about selecting the tools needed for success.

Written by Stephen Ostrowski
Published on May. 11, 2021
Brand Studio Logo

With a bevvy of resources available, identifying the proper tools for an organization’s DevOps toolchain is a significant decision that warrants thorough consideration. 

According to Maria Verba, engineering manager, developer experience at Handshake, technologists at the job recruiting hub geared toward college students have a general framework to inform that decision-making process.

“Most of the time we’re adopting a new tool to resolve a specific pain point in our processes,” she said. Considerations like performance, risk management and ability of implementation are just a few factors that the team at the San Francisco-headquartered company — which just announced a $80 million Series E  — considers when looking to bolster their toolchain, Verba said. 

 

Handshake team members working
Handshake

 

Additionally, the engineering manager noted that realizing a sound toolchain also aligns with the organization's ethos.

“‘Move quickly but do not rush’ is one of our company values; maintaining and investing in a healthy toolchain has helped us do exactly that,” Verba said.

Catching up with Built In San Francisco, Verba highlighted some of the org’s go-to tools and the benefits of looking after its toolchain.  


 

Maria Verba
Engineering Manager, Developer Experience • Handshake

Give us a brief glimpse into your DevOps toolchain. What are a few of your favorite tools your team is currently using?

We love automation and continuous deployment at Handshake. For both web app and mobile development, it all starts with git/GitHub. For web apps, after creating a new branch and opening a pull request, several builds are kicked off automatically: Buildkite, which not only runs our test suites, but also database migration checks, linters, security and known CVEs audits, and license checks; and Cloud Build, which builds artifacts and docker image and pushes it to Google Container Registry. Once the pull request is approved and merged into the main branch, our Deployer, which we built on Shipit engine, picks up the commit and auto-deploys it using seira, a library we created to manage and interact with our Kubernetes cluster.

Additionally, we employ a variety of in-house and third-party tools to assist us with the process of delivering value to our customers, such as Launchdarkly, Datadog, Terraform and HoundCI. We also rely a lot on integrations for monitoring and alerting. Our iOS and Android apps have a slightly different process, since they need to be published on App Store and Google Play; we use tools like CircleCI, fastlane, App Store Connect, Firebase and Google Play Console.

 

What were some of the key considerations when evaluating and choosing the tools your team would use?

Most of the time we’re adopting a new tool to resolve a specific pain point in our processes. First, it has to satisfy our needs, which a lot of times has to deal with scale; thus, performance is top of mind. We also perform a cost-benefit analysis and are mindful of our budgets. For example, a few years ago we had to switch our web tests from CircleCI to Buildkite because our test suite was getting too large and slow. We wanted to have the flexibility to scale up and parallelize our containers without taking a large cost hit.

The next big priority for us is automation and risk management. Whenever we can, we adopt an “infrastructure as code” process, which allows us to de-risk our changes by ensuring we have code reviews for them.

Last but not least, we also consider speed and ease of implementation, as it’s important that we minimize any disruptions to the teams. Additionally, we consider the possibility of consolidating third-party tools to simplify the process and reduce the mental overhead — for example, we chose to use Datadog’s Synthetic testing, as we already use Datadog for monitoring and alerting. And we also consider customer service, as we like to be able to work with the team to find the best solution for us.

 

We love automation and continuous deployment at Handshake.”

 

What has been the key benefit your team has seen from building out and maintaining a healthy toolchain?

“Move quickly but do not rush” is one of our company values; maintaining and investing in a healthy toolchain has helped us do exactly that. We are growing fast, and a large part of our developers work on a single monolith. Being able to deliver value to our customers quickly without blocking others and without service disruptions has been crucial. By putting in place tools that automate major checks and streamline the review, testing and deployment processes, we are able to gain confidence in our releases, improve developer experience, respond to issues quickly, experiment with code variations, reduce the feedback cycle time and do what we love most with peace of mind.

Personally, I love our deployment process: We roll out changes multiple times a day  — sometimes, up to 130 times! — and there’s no need to get involved (although, there are ways to monitor the progress, of course), but if there’s a hotfix or a rollback, it’s easy to jump in and get involved.

 

Responses have been edited for length and clarity. Images via Handshake.