Just having a pipeline that puts a code change into a server doesn’t mean an organization does continuous delivery.
This reflection came to my mind because more often than not, I see CI/CD interpreted as continuous integration + continuous delivery.
However, for me CI/CD means continuous integration + continuous deployment, and continuous delivery is much more than that — the ability of an organization to keep software always in a releasable state, and actually release frequently in small chunks.
As such, and to comply with the “releasable state” and “frequent release” parts, organizations practicing continuous delivery must do CI/CD, but also:
- Agile scope/team management
- Product-orientation
- Cross-funcional teams (no silos FTW!)
- Continuous testing, in production-like environments, or even in production with A/B or canaries
- Infrastructure as code and GitOps
- End-to-end observability (app logs, app traces, app telemetry, network activity, etc.)
- Static and dynamic code analysis (inclusive of security vulnerabilities)
- and other important software engineering practices.
A pipeline is crucial, but it is just one step on the journey to continuous delivery (and DevOps).
I’m curious to know what others think…