How a team of 15 developers deploys 4200 times per Month using the Preview Environments
When the CTO of this growing company (freshly acquired by a billion-dollar company) contacted me, he was concerned by the ability of his team to deliver what they committed to for the current year. His main issue was 15 engineers working in the same development environment. Can you imagine developing on the same workstation? Things will get worst as they plan to quadruple their engineering team size in the next 18 months. They tried to set up ephemeral environments with Terraform, Kubernetes, and other great tools but they literally failed by the complexity of building such kind of system with a tech stack of 8 applications and databases.
Romaric PhilogèneFebruary 5, 2022 · 3 min read
Long story short, less than 30 days later, they have deployed more than 4200 times with dozens of preview environments. In this article, you will learn how this company multiplied by 43 their number of deployments and increased drastically their release cycles. Let’s go!
Before, the 15 developers were using a shared development environment. They struggled to release fixes and new features at the same time. The product managers in charge of the QA were also not able to validate every change with confidence. Worst, in the last months they faced multiple production outages since the staging and development environments were running on the same Kubernetes cluster. The CTO discovered our Preview Environment feature on Reddit and decided to contact us to see how it could improve their development workflow. After a demo call and a quick POC, they decided to move forward and promote it with their whole technical stack and more team members.
Their technical stack:
- 1 Rails application
- 1 Rails worker application with Sidekiq
- 1 Redis
- 1 RabbitMQ
- 1 MongoDB
- 1 MariaDB
- 1 Elasticsearch DB
- 1 Kibana
Before getting started, I need to explain what is the concept of Preview Environment. Basically, Qovery provides a feature called “Preview Environment”. When turned on, you get a full replica of your production environment for every pull request. Meaning, every pull request can be tested in an isolated and ephemeral environment. When the pull request is merged, the Preview Environment is destroyed and the consumed resources are released. Now, you understand how it was possible to deploy 43 times more than before.
Here is a screenshot of the number of deployments per day. With a maximum of 650 deployments in a day. The average is around 220 deployments per day. During the weekend there is no deployment.
In less than 30 days, they crossed the 4200 deployments. Which results in an average of 9 deployments per day per developer. Which is much higher than Airbnb for a ratio - number of deployments per developer per month (Airbnb claims 125 000 deployments in a year).
Improving the performance of the development team was the primary goal of using the Preview Environment, but since Qovery makes using multiple Kubernetes clusters seamlessly, they decided to use multiple AWS accounts and isolated Kubernetes clusters for the production, staging, and preview environments.
It’s 100% transparent for the developers and they have not to worried about where the applications are running.
Using Preview Environments helped this customer improve their release cycles by 43 times in less than a month. They also isolated their production and staging from the development environments to avoid causing production outages while running tests. With Qovery, they better structured their work with no loss in productivity.
Check out the Preview Environment feature presented by John Gramila 👇.
Special thanks to Alex for closely working with us.