Continuous Delivery (CD) as a software development & delivery philosophy has its roots in the lean movement and in the Japanese concept of Kaizen (Continuous Improvement). In Dr. Deming’s work of the 14 principles of management, he lays out the concept of Continuous or Continual Improvement as a way to constantly look at the various aspects of management and how to improve efficiency. These concepts when applied to Software Development & Delivery achieve the same purpose – how to constantly keep the flow of software through the delivery process to drive efficiencies and improve customer experience.
To achieve CD in a large complex enterprise, there are many foundational, architectural and organizational changes that need to be put in-place and it will take a while before true continuous delivery is realized. And for some enterprises, true continuous delivery is just not needed or a stretch too far. To put a roadmap in-place for CD, the following are some of the foundational building blocks that need to be built and constantly exercised so that the flow of features drives the process of continuous improvement:
- Re-imagined Small Batch & Repeatable Release Process
- Pipeline Automation
- Version Control & Configuration Management
- Continuous Integration
- Testing Strategy or Continuous Testing
- Local Development & Verification
- Branching & Merging Strategies
- Manifest & Trigger based Deployments
- Production Deployment & Monitoring
Once the foundational work is in-place, ensure that the flow of code through the process is constant and in-small batch. The goal is to get to a state of readiness to deploy code when a small batch of functionality is ready and the system takes care of testing & delivering it to production and monitoring for any issues.