Continuous X | Triumph of DevOps
X in the title meant for 3 different degrees of continuous delivery in the DevOps model — Integration, Delivery, and Deployment. In modern software development, the smaller the increment, the faster the delivery, and the better the outcome, and many high-performing organization successfully implemented this in their DevOps model. The main benefits from this approach are a huge decrease in ‘Time to Market’ value, which helps the organization to ‘Deploy on Demand’, quickly move from ‘Concept to Cash’, and increase quality. Let's see each one of them in detail
Continuous Integration: this is the practice of automatically building and unit testing the entire application frequently, ideally at every check-in.
Continuous Delivery: this is an additional practice of deploying every change to a production-like environment and performing the automated integration and acceptance tests on it.
Continuous Deployment: is an extension to the above two and after testing every change, automatically deploys to the production
The best practices in continuous Integration
- All builds should pass the sanity test (optimistic scenarios, less than 5 minutes)
- Commit changes in small bits
- Don’t leave the build broken, fix it
- Use a Trunk-based (master) development approach
- Build should return a status, a log, and an artifact/increment
The best practices in continuous Delivery
- Only build artifacts once, don’t encourage rebuild
- Artifacts should be immutable, and shouldn’t change
- The staging environment should be a copy of the Production
- Stop deploys if a previous step fails
- Deployment should be idempotent
The best practices in continuous Deployments
- Use a toolchain to automate the whole process
- Continually expand and improve the toolchain
- Use a shared version control mechanism
- Automated Metrics, monitoring, alerting
- Treat infrastructure as code (IaC)
The key here is to ensure a quick, small, robust, and accurately repeatable continuous delivery of the product increment at regular, predefined time intervals. With these best practices in place, pushing the ‘release to production’ button can be done much more often and with much more confidence.