clement13.net
Original photo: A ship launch
Description
A ship launch
Source
author not stated · original page
Licence
PD Public domain
Original photo, unretouched. The background is a version of it stylised by the site.

Deployment and Operations

This topic measures the safety of production release and day-to-day operations: deployment duration and reversibility, change failure rate, operational autonomy…

Guide≈ 6 min readCheckedCheck doneFacts, figures and references were checked against the sources cited in the page.Written with AI assistance; sources are cited at the bottom of the page. An error? Report it via clement13.net.Reading
In brief

This topic measures the safety of production release and day-to-day operations: deployment duration and reversibility, change failure rate, operational autonomy, and control of environments and configuration. It extends the chain seen in 05 (producing the artifact) with the chain “put it into service and keep it running”.

On this page

Level: 🟢→🔴 · Topic code: DEP (DL matrix)

Why this topic#

A deployment is the moment when value meets risk. A manual, overnight deployment lasting several hours, with no prepared rollback, creates incidents that stay in collective memory and eventually slow down all deliveries (“we're not touching anything before the end of the quarter”). A normalized deployment — short, repeatable, reversible — makes delivery boring, which is exactly the goal.

Two specifics of our context: (1) the database is not deployed like a binary: it carries state, and a migration is often irreversible (column deletion, data transformation); (2) when the product is delivered to the client via installation kits, the client executes the deployment: the promise becomes “a kit installs without surprises, regardless of the starting version.” See CI/CD for Data: Databases, Datamarts, Pipelines, and Reports and topic BI 07.

What this topic measures#

  • Axis: from “heroic intervention” to “routine, reversible, and measured event.”
  • Key indicators: downtime duration per deployment; change failure rate; time to restore service; share of deployments with no manual intervention.
  • Unit: minutes; %; hours.

Five-level table#

Level Short name Promise Typical indicator (orders of magnitude)
1 Heroic Production release succeeds if the right people are present and available. Deployment lasting several hours; frequent failures (> 30%)
2 Procedure-driven A deployment follows a written procedure and leaves a trace. Procedure; rollback by restore; failure ≈ 20-30%
3 Repeatable A deployment is the same operation everywhere, in under an hour, with a tested rollback. Scripted; tested rollback; failure < 15%
4 No interruption The service stays available during deployment, and a defect affects few users before being contained. Downtime ≈ 0; progressive deployment; restoration < 1 h
5 Autonomous The system deploys, verifies, and corrects itself; production release is a non-event. Failure < 5%; automatic rollback; restoration in minutes

Milestones by level#

ID Milestone Verifiable evidence
DL-DEP-1.1 The list of environments and their roles exists Up-to-date page
DL-DEP-1.2 Deployments are logged (who, when, which version) Consultable log
DL-DEP-1.3 Pre-deployment backups exist Backup evidence per deployment
DL-DEP-2.1 A deployment procedure and a rollback procedure are documented Dated documents
DL-DEP-2.2 Environment-specific parameters are listed (no “magic” values in code) Configuration inventory
DL-DEP-2.3 Deployment permissions are separated from development permissions Role review
DL-DEP-2.4 Deployment is announced and scheduled in a maintenance window Change calendar
DL-DEP-3.1 Deployment is end-to-end scripted, with no manual step Successful execution by a third party
DL-DEP-3.2 Rollback is tested, at least once per quarter Dated exercise
DL-DEP-3.3 Database migrations are versioned, idempotent, and replayable (rerun does not break) Successful double execution
DL-DEP-3.4 Environments are described as code (or reconstructable) and drift little Periodic drift check
DL-DEP-3.5 An automatic smoke test verifies each deployment Logged result
DL-DEP-4.1 A deployment causes no downtime (blue/green, rolling, compatibility window) Downtime measure ≈ 0
DL-DEP-4.2 New features can be enabled by toggle, independently of deployment At least 3 toggles used
DL-DEP-4.3 A progressive deployment (canary, rings) limits defect exposure Configurable exposure percentage
DL-DEP-4.4 Data migrations are decoupled (expand/contract) and N-1 compatible Tested procedure
DL-DEP-4.5 Change failure rate is measured and < 15% Quarterly report
DL-DEP-5.1 Rollback is automatic when a health threshold is exceeded Test triggering rollback
DL-DEP-5.2 Changes are analyzed after each failure (blameless analysis) and actions are tracked Closed incident reports
DL-DEP-5.3 Failure exercises (disaster recovery, loss of an environment) are conducted at least annually Exercise report
DL-DEP-5.4 Operations cost per deployment and per environment is known and optimized Cost table

Detailed reading by level#

🟢 Level 1 — Heroic#

  • Signs: overnight deployments, manual file copying, each version is an event, incidents are handled “hot” by the only person who knows how.
  • Gain: individual mastery.
  • Does not guarantee: repeatability or availability of key people.
  • Difficulty: 1/5 · Effort: 1/5.

🟢 Level 2 — Procedure-driven#

  • Signs: a checklist, a log, backups. Deployments are slower but less risky.
  • Gain: knowledge is documented.
  • Does not guarantee: that the procedure is followed to the letter — human factors remain.
  • Difficulty: 2/5 · Effort: 2/5.

🟡 Level 3 — Repeatable#

  • Signs: deployment by script; rollback is tested (a rollback never replayed is a hypothesis). Database migrations are idempotent: running the script twice leaves the same state, which allows recovery after a mid-run failure.
  • Gain: regular, boring deployments; fewer production release incidents.
  • Does not guarantee: continuous availability — brief downtime still exists.
  • Difficulty: 3/5 · Effort: 3/5.

🔴 Level 4 — No interruption#

  • Signs: deployment without service stop, feature toggles, progressive exposure. Schema migration is done in two steps: add (expand), migrate, then remove (contract) once no consumer uses the old one anymore.
  • Gain: deployment is no longer correlated with business risk.
  • Does not guarantee: absence of incidents; it limits and contains them.
  • Difficulty: 4/5 · Effort: 4/5.

🔴 Level 5 — Autonomous#

  • Signs: automatic rollback on health-indicator degradation; blameless analysis; regular failure exercises.
  • Gain: proven, not assumed, resilience.
  • Does not guarantee: profitability — advanced automation has a design cost that only makes sense beyond a certain change volume.
  • Difficulty: 5/5 · Effort: 5/5.

Partial achievement and rating#

Apply the rating rule.

  • 0.5 on DL-DEP-3.2: rollback tested once, more than one year ago.
  • 0.5 on DL-DEP-3.3: idempotent migrations for half of objects (the others fail on the second pass).
  • A partial 5: automatic rollback for the application, manual for the database.
⚠️ Pitfall

Illusory rollback. Symptom: “we'll restore the backup” — but since deployment, users have entered data. Cause: confusing restore with rollback. Remedy: N-1 compatible changes so returning to previous code does not require restoring data.

⚠️ Pitfall

Environment drift. Symptom: “it won't install at this client.” Cause: manual changes. Remedy: describe as code and verify drift.

💡 Expert tip

Test your installation procedure on a clean environment and on an environment at the previous version: those are two different paths; testing only one means missing the other.

Moving to the next level#

Possible means (optional)

  • 1 → 2: checklist, deployment log, mandatory backup beforehand.
  • 2 → 3: single script, smoke test, idempotent migrations, rollback exercise.
  • 3 → 4: blue/green or progressive deployment, toggles, two-step migrations.
  • 4 → 5: health monitoring tied to automatic rollback; failure exercises.
🧪 Example

A migration removes a column used by two reports. Level 2: direct removal, reports break Monday morning. Level 4: (1) add the new column, (2) migrate consumers over 2 versions, (3) remove the old one in the next version, with a compatibility view in the meantime.

⚠️ Pitfall (Goodhart)

A “zero deployment incidents” objective pushes teams to declare incidents as “normal changes.” Also measure deployments delayed or avoided out of fear.

See also#

✻ Written by Claude Sonnet 5.5