Continuous Delivery is the process in which new lines of software are consistently deployed in frequent and reliable cycles to a staging or production environment. By deploying code in smaller units, this process minimizes the risk that the new code will introduce bugs or create issues. Continuous Delivery has two parts: Continuous Integration and Continuous Deployment.
Continuous Integration is the process of continuously testing new code as it’s being written. It’s a system that identifies bugs, exposes performance problems, and ensures that new features don’t break old features. Continuous Integration grants confidence.
Continuous Deployment is the process aimed at reducing the cost and time elapsed between a developer writing new code and having the new code deployed to an external environment. This is done through automation, improved tooling, or improved confidence that new code isn’t broken via testing. Continuous Deployment makes pushing code comfortable.
Here at Differential, we’ve found Continuous Delivery offers a number of advantages to both our developers and clients, making it well worth the setup.
- Rapidly Unlock ValueIt’s easy for the consulting process to be a black box; the client puts requirements in, waits a few months, and a product comes out. It’s easy for the development team to lose track of the client's desires and for the client to become frustrated with the lack of progress updates. With Continuous Delivery, you can update clients frequently on the status of their product and be confident that the code you’re writing is in line with their expectations. When the client is kept in the loop, it becomes easier to not only build a good product but to build the right product.
- Developers are confident their code works. With a properly working, comprehensive, continuous integration process, as a developer, you can know that any code you push will meet the defined requirements, and won’t break any existing features (assuming you follow the process your team has decided on). Having this confidence in your code removes a lot of pressure from you and your team. And it frees up everyone to focus on writing new code, instead of constantly worrying whether the code they pushed actually works.
- Speed up development. It takes time and effort to set up a Continuous Delivery work-flow; writing tests aren't always easy, and automated deployment can be a tricky beast to wrangle. However, once you have the process figured out for your team and project, your project will move much faster. The ease of deployment and added confidence Continuous Deployment brings will help your developers focus more on what matters: writing sweet new features, instead of crunching nasty accidental bugs.
- With Continuous Delivery, you can avoid “problem in production panic” When something goes wrong in a production environment, it’s easy for developer teams to freak out, and potentially release more broken (code?) or monkey patch live systems in destructive ways. However, with stable and automated deployment practices in place, developers are able to submit their code through the QA process, instead of potentially making an existing problem worse.
Curious on how to start developing a continuous delivery strategy for your team?
Learn from Zach Holman how Github deploys software.
Read the book our team has been reading to further understand the process
Learn how and why Etsy deploys their app over 50 times a day.