Are you thinking of using containers? Or have you already started the journey and would like to hear from an early container adopter? We spoke with Kyle Anderson from Yelp in a webinar recently. He covered various topics like why Yelp chose containers for development, what kind of difficulties they faced and lessons they learned during their adoption. I am writing this blog post for ease of consumption. If you prefer listening to the replay, click here.
Ennio Carboni from our Product Management team opened the webinar with some cool statistics on container adoption. “It is a movement that’s happening in the industry and containers provide a true hybrid solution going across data centers and public clouds”, he quotes. He added that business decisions should drive the adoption of containers in every company and I completely agree.
Kyle Anderson, Site Reliability Engineer at Yelp, spoke about Yelp as a company and also as a technology adopter/developer. Yelp, he added, started with a monolith 10 years ago and it currently runs in containers. Architecting the infrastructure to handle the real life scenarios was the key for Yelp instead of leaving it behind. Kyle emphasized that containers were adopted at Yelp from the bottom up, based on the problems that they needed to solve. They started using containers when the technology was not completely baked and ecosystem was not as well defined.
Looking back, Kyle mentioned that containers came with some pain too. However, as container adoption increased rapidly within their organization, container management got overwhelming. Classic (non-dockerized) service infrastructure at Yelp were not built with the developer-experience in mind. To drive a culture shift towards containers, the developer experience was made simple and with reduced friction. Plus, every step that Yelp took was based on research and action driven and not just because it was ‘cool’.
Kyle also mentioned a few factors that every organization should consider before adopting containers as shown below. He spoke more elaborately about this during the webinar. I am capturing some key things here.
Yelp uses Jenkins for pipelines since they were using it already. Kyle suggested that, though there are multiple tools available now, companies should use tools that they are already familiar with if possible. This makes container adoption easier since developers have one less thing to learn from the scratch.
“A good interface would shield engineers from the pain” and a CLI (command line interface) was used by Yelp. Using the right interface can help you take the pain away.
This is a key design decision that will heavily influence the technology stack, Kyle suggested. So select the right service delivery platform before you select the orchestrator. There are multiple tools available, hence choosing the right service delivery tool becomes important. Working closely with operations to select the right tool can be a good starting point for most organizations.
Kyle said that cluster management can get out of hand very quickly if not given proper attention. Terraform, used by Yelp, has been proven solid and is vendor agnostic. Kyle recommended companies to try it if it suits their needs.
Before you build anything, selecting monitoring and alerting can be very useful. Collecting metrics for dashboards for the developers can simplify the development process. Yelp also focused on selecting a universal runtime to make things look the same.
Yelp uses its own datacenter and public cloud that helps the avoid the vendor lock-in for containers. Immutable deployments is a best practice for Yelp and makes using containers even more beneficial. Canaries are a way to develop the code and roll it out slowly and in a controlled fashion. Yelp has been using canaries for day to day deployment using containers.
Yelp uses CloudHealth Technologies for their container environment cost management and visibility. Yelp relies on container module from CloudHealth to inspect what different business units are using for their own clusters. This has helped them be more organized in both data center and in Amazon Web Services.