Picture this: Your software development team is racing against the clock to deliver a critical update, but manual deployments and error-prone processes are slowing them down. Meanwhile, competitors with a more streamlined workflow are leaving you in the dust.
Well, this is EXACTLY what happened to Etsy! The company had a slow and error-prone deployment process, which resulted in infrequent releases and a lack of collaboration between development and operations teams.
Things had to change since they were constantly more and more behind. But change is expensive and scary… What if you make it worse, what if everything breaks?
Etsy had to find a way to scale its infrastructure and accommodate rapid growth while maintaining the ability to deploy new features and enhancements quickly.
All of this had to be done in small chunks — allowing their developers to focus on small chunks of good code instead of large chunks of “meh” code.
Continuous Integration and Continuous Delivery (CI/CD) have entered the chat.
The only way to keep up with the scaling problem for Etsy was to have fewer eyeballs and more machines looking at code. That’s what CI/CD is. It’s a set of good practices and automated tests that have to be passed in order for the code commit to be approved.
By adopting CI/CD Etsy made their flow look like this:
- Developers now frequently commit their code changes to a shared repository.
- As soon as a commit is made, an automated build process is triggered, and the code is compiled.
- Automated tests are run to ensure the code’s functionality and stability.
- If the code passes all tests, it automatically moves to the deployment stage and gets deployed to a staging or production environment.
They went from:
- “could you please review my code”
- “In a while, I’m working on smth right now”
- “Ok, let me know when you’re done :(”
To up to 50 deployments per day!
In theory, it’s simple. In practice, it looked like this:
Etsy implemented a CI/CD pipeline using a combination of open-source tools and custom-built solutions. The Continuous Integration process was managed by Jenkins, which automated the build, testing, and integration of code changes. In addition, Etsy leveraged its custom deployment tool, Deployinator, for Continuous Delivery. Deployinator managed the deployment process across multiple environments, such as staging, production, and rollback, with a focus on speed and reliability.
To ensure the quality of its software, Etsy used a suite of automated testing tools, including PHPUnit for unit testing, Selenium for browser testing, and JSHint for JavaScript linting. These tools were integrated into the CI/CD pipeline to identify potential issues early in the development process, preventing them from reaching the production environment.
Moreover, Etsy employed a “feature flag” system, which allowed them to roll out new features incrementally to a small subset of users. This approach facilitated A/B testing and enabled Etsy to gather user feedback and monitor performance before a full-scale launch.
As a result of adopting CI/CD, Etsy experienced a significant increase in deployment frequency, with up to 50 deployments per day, while maintaining a high level of software quality.
The Skaylink Approach
Does all of this sound impossible to you? Well, Skaylink thrives on challenges and if you think your business could benefit from a CI/CD model Skaylink’s Cloud hosting expertise and services can help you implement these practices to achieve similar results — transforming your infrastructure and fostering a culture of continuous improvement.
Contact us and let’s start building.