Like many other companies, SoundCloud migrated to a microservices architecture over the last couple of years. Today, there are several hundreds of services with thousands of container instances running in our datacenters. In this talk, I’ll give a brief overview of the current state of our infrastructure and how a typical service is deployed and can communicate with other services.
To make it simple for teams to prototype, deploy and operate several services on their own, we built our own container runtime environment, called Bazooka. I’ll give an overview of Bazooka, its features and design decisions, but also the shortcomings and problems we faced over time:
- automated scheduling.
- resource management for services with different load profiles.
- monitoring of highly dynamic deploys or the requirements of stateful services.
With the rise of Docker and a general shift towards container-based environments, SoundCloud started to build more and more of its development workflows based on these new solutions. When it became clear that our existing system needed an overhaul to support additional requirements and overcome its shortcomings, we started to look into other container management technologies and available open-source options. In the second part, I’ll present our evaluation process and some of the requirements we defined for a suitable candidate. The attendee will learn which features and properties of Kubernetes make it the ideal choice for us.
Finally, I’ll talk about the current state of our Kubernetes migration, some challenges we need to solve to integrate Kubernetes in our existing infrastructure, and present some open issues we are working on in order to eventually deploy and run all our services with Kubernetes.