Practicing Continuous Delivery means that you are ready to release product changes any time you want. Your product is always ready to deploy to production.
What Is a Continuous Delivery
Continuous Delivery is a practice that enables you to release new product changes to your customers at any given time. Continuous Delivery is an extension of Continuous Integration - a practice of merging changes back to the main branch as often as possible. If you practice Continuous Delivery, your tests and the release process are automated. You can release daily or as often as you need.
Why would I want to release my product so often? You might ask. The reason can be just to respond to your customers’ demands as soon as possible, and to show them how close to completion the product you are building for them is. Customers expect to see the progress or they can move to another provider. It also saves you a lot of time, money, and potential risks connected to releasing the whole product after weeks of work.
Source: Continuous Delivery
Why You Might Want to Practice Continuous Delivery
Practicing Continuous Delivery helps you with:
- If you deploy smaller changes, fixing bugs is easier as there is less changed code to investigate.
- Bugs are captured early by the automated tests
- Continuous Delivery allows you to test ideas with users before you are finished with the whole feature. You can avoid spending time with a feature that does not bring any value and concentrate on more important things.
- The Continuous Integration servers run tests automatically
- Automation reduces the cost associated with the release process
- The Quality Assurance team spends less time testing
- Continuous Integration servers can run hundreds of tests in just a few seconds
- The delivery team can engage more often because it gets feedback immediately
- Developers do not switch their focus too often because they can immediately work on fixing broken build before moving to another task
- The traditional phased product delivery often takes weeks or even months. With Continuous Delivery and automation on a daily basis, we can remove the phases and avoid fixing large amounts of work. Therefore, the product is much faster on the market.
Problems the Continuous Delivery Helps to Solve
How to Implement Continuous Delivery
To implement Continuous Delivery, you need:
- To deploy to production as early as possible. Smaller batches of work are easier to troubleshoot.
- To collaborate effectively with every team member. It is important that every team member practices Continuous Delivery to make it efficient.
- Automate as much as possible. Once you start the deployment, there should not be a need for human intervention.
- Your team to write automated tests for each new feature, improvement, or bug fix.
- A Continuous Integration server that monitors your main repository and runs tests automatically.
- To merge changes as often as possible. At least once a day.
- Continuous Integration and tests covering as much of your code as possible.
Common Pitfalls of the Continuous Delivery
When implementing Continuous Delivery, try to think of it as a way of working. Every team member has to participate. If one of the developers merges changes less often than the others, the product is not ready for the release and the concept collapses.
Do not build Continuous Delivery on top of an unstable or non-existent Continuous Integration foundation. Continuous Delivery is just a practice to extend Continuous Integration to the production environment. Without a solid foundation, Continuous Delivery cannot function.
Resources for the Continuous Delivery
- Continuous Delivery: Continuous Delivery
- Martin Flowler: ContinuousDelivery
- Atlassian: Continuous integration vs. continuous delivery vs. continuous deployment
Want to write for DXKB?
Feel free to contribute. People from DXKB community will be more than happy.
Continuous Integration is a software development practice that makes developers integrate code changes into a shared repository routinely and frequently. Usually, each person integrates at least daily and that ensures them that their code changes do not break anything.Read more
DevOps is a set of practices that brings development and operations teams together. The collaboration helps to release software much faster.Read more
An Automated Deployment allows an application to be deployed across various stages of the development process. It minimizes the need for manual intervention.Read more
Kanban is a Lean method similar to Scrum. It is focused on managing a continuous delivery of products with avoiding the "bottleneck effect". It helps teams work together and more effectively.Read more
Agile Events are necessary meetings for keeping up the good work. They are usually time-boxed and the most common Agile framework that uses these periodic rituals is Scrum.Read more