Skip to main content

GetYourGuide

How Spinnaker and Armory are accelerating software delivery to AWS at GetYourGuide.

GetYourGuide's Results

100% increase in deployment frequency to AWS

Reduced deployments incidents to zero

Replaced 4 legacy home grown deployment tools

Saved cost of 1 Infrastructure Engineer

About GetYourGuide

GetYourGuide is the premier site to book experiences across the globe. Since 2009, they’ve gained the trust of millions of travelers and established themselves as the authority in unique and unmissable things to do. They show travelers the best of their destination: whether it’s skipping the line to the top of the Eiffel Tower, taking a traditional cooking class in Rome, or discovering Amsterdam by bike. With GetYourGuide Originals, they’ve created one-of-a-kind experiences in special locations worldwide that don’t just scratch the surface — they dive right in. Together with top-rated local partners and 24/7 customer service, they guarantee that everything from booking to day-of details is easy, fun, and most importantly: incredible. 

Background

Like many companies, GetYourGuide started out deploying a monolith to a data center. By 2015 they had built an internal tool, hdeploy, to help deploy code to their five physical servers running in a data center in Germany. Engineers would SSH into ‘build1’, their dedicated build server, and run hdeploy CLI commands there, with manual coordination in a Hipchat room. hdeploy was later upgraded with a Slack bot and support for AWS EC2, but at its heart it was the same tool. 

By 2017 GetYourGuide was experimenting with Kubernetes 0.9, and their existing tooling around deployments did not fit the bill. They introduced two new internal tools, Convoy and DSS, which helped transition from artifacts to Docker images and from 0 microservices to 150+, while providing a similar manual workflow and control as hdeploy.

But by 2019, GetYourGuide had begun to look for a new solution. They had adopted Kubernetes in production, and managing the deployment of 150+ microservices to multiple deployment targets was becoming unwieldy. 

The Challenge

Before Spinnaker, GetYourGuide was using its in-house tooling, which leveraged the Kubernetes API for deploying Kubernetes Manifests and ECR images. Outside of the Infrastructure team, there was very little know-how of how deployments worked. It was impossible to extend a pipeline, very difficult to test changes to manifests, and they were using only a small percent of the Kubernetes API. There was no support for CRDs, keeping up with the Python Kubernetes API was a challenge, and they were triggering rolling updates with no other control over deployment strategies.  

In addition, hdeploy regularly timed out and had a hard time adopting new deployment targets. Neither hdeploy or Convoy had a deployment locking mechanism, which meant that two engineers could deploy two different versions at the time, resulting in either inconsistent states or nondeterministic behavior. And both tools worked as “trigger, then forget,” tools; after a deployment was triggered, there weren’t machines checking to see if the traffic should be handled or if the deployment should be rolled back.  

More broadly, GetYourGuide was seeking to replace in-house tools with the leading industry standard, modernize its workflow to fully-automated multitarget deployments, add canary-based releases for resilience, and fully leverage the power of a microservice-based design.

The Solution

GetYourGuide evaluated Azure Pipelines, CircleCI, and Codefresh before ultimately selecting Armory, an industry standard and award-winning platform. “GetYourGuide was in the final stages of moving a 9-year-old monolith into Kubernetes, and needed a system that could manage our complex deployment needs,” said Alex Eftimie, Staff DevOps Engineer, Developer Enablement. “We were looking for a full feature set that allowed the deployment of a monolith, with all of its subsystems, as well as the new Kubernetes-native apps.” 

Spinnaker offered an elegant solution, and Armory’s support and exclusive enterprise features added substantial additional value.

“Armory offered us top-notch support for Spinnaker. They have the capacity to deliver, and they listen to the customer needs when shaping new features for the product,” said Eftimie. “The Pipelines as Code feature was another key reason to choose Armory, aligning well with how we do all of our other configurations.”

GetYourGuide leverages Drone as its CI tool, which integrates nicely with Spinnaker to create a holistic CI/CD solution.

The Process

GetYourGuide started adoption of the Armory platform in September of 2019, and by the end of February 2020 had successfully migrated all 160+ services. They began by moving their monolith onto Spinnaker, while still running it outside of Kubernetes, and then added in the Kubernetes-based microservices as well. Some services are using a manifest generator that produces Helm charts, while others use Kustomize. Trust and safety was a consideration right from the start. “The manual confirmation stages that we included helped us build a lot of developer trust in the new pipelines,” said Eftimie. 

“The Armory support is spot on. We spoke to their engineers, who knew exactly what the issue was and how to resolve it. Once we learned the various Spinnaker concepts (artifacts, stages, etc.), it became really easy to use Spinnaker. We are able to easily extend / customize pipelines and reuse components instead of rebuilding everything from scratch, every time.”

Taking advantage of Spinnaker’s open source nature, GetYourGuide also built several features on top of Spinnaker to customize it to their needs, specifically around the Spinnaker CLI and the Halyard installation and configuration tool. 

The Outcome

“After adopting Spinnaker, we saw a substantial increase in deployment frequency, and support requests reduced to almost zero. Over the last 6 months, this has allowed us to focus on other parts of the infrastructure, like the testing environments. We’re happy with Spinnaker and don’t look back,” said Eftimie. “We like the modularity of the tool, how the different components are isolated, and how rolling upgrades happen with zero downtime.”

With Armory, GetYourGuide also gained more trust in the CD process. “Spinnaker follows the deployment until completion (when all new resources are healthy, and all old ones are evicted), unlike our in-house tooling. This was instrumental multiple times during incidents, or when trying to detect bad code/bad configurations. With Spinnaker, we trust it to do what we ask it to do.”

Key Stats:

  • Deploying to Amazon Web Services
  • 22 Kubernetes clusters (20 in testing and 2 in production), running on top of EC2, with worker nodes that scale on demand
  • 160 services automatically deployed with Spinnaker
  • ~100 deployments to production per day
  • 200+ pipelines
  • 200+ EC2 nodes

The Future

GetYourGuide is excited about the future with Armory. According to Eftimie, “With each release, we’ve seen the functionality and the UI in the tool continuing to get better.” 

In the coming months, GetYourGuide is looking forward to training their application developers with Armory’s Solutions Architects, and making canary releases mandatory for all business-critical services. 

Get to Software Delivery Nirvana with Armory.