Continuous Delivery

Categories
Systems
Sources
Accelerate (Nicole Forsgren, Jez Humble, Gene Kim), Site Reliability Engineering (Google)

Keeping software in a continuously releasable state, so that shipping to users is a routine, low-risk, on-demand event rather than a painful, infrequent project. It is assembled from working in small batches, automating the build-test-deploy path so quality is built in rather than inspected in later, keeping everything needed to release in version control, and decoupling deployment from release so a change can be validated safely in production before it is exposed to everyone.

Composed Of

  • Batch Size — make each change small, so it integrates and releases quickly and a failure is easy to isolate.
  • Automated Testing — the safety net that lets the path to production run without manual gatekeeping; quality is built in, not inspected afterward.
  • Reversibility — design releases so a bad change can be backed out or contained cheaply, which is what makes frequent release safe.
  • Feedback Loops — close the loop fast: small batches plus automation plus telemetry mean problems surface in minutes, not after a quarterly release.

Why it Matters

Releasing is where most production risk concentrates, and the instinct is to manage that risk by releasing rarely. Accelerate's evidence inverts the instinct: teams that release continuously are both faster and more stable, because small, automated, reversible changes are individually low-risk and quick to verify. Continuous delivery is the practice that makes speed and stability rise together rather than trade off.

Signals

  • The software is always in a releasable state; a release is a business decision, not an engineering scramble.
  • The build-test-deploy path is automated and trusted, and deployment is decoupled from release (flags, canaries).
  • Failure signal: long stabilization periods after big-bang releases, manual release runbooks, and a fear of deploying.

Risks

Shrinking batches and increasing release frequency without the automation and test safety net just multiplies manual overhead and risk. Automating a fragile, untrusted pipeline propagates failures faster. Continuous delivery needs a generative culture and self-testing code to be safe, not just tooling.