Some ruminations about CI/CD

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…

Leave a comment