All outcomes
Skills

Deployment Plan and Operations Runbook

5 weeks · 0 milestones

Produce a deployment plan and operations runbook for a real software system covering: a step-by-step deployment procedure with pre-conditions, execution steps, and post-deployment verification for at least one environment (staging or production), a rollback procedure with decision criteria for when to roll back, an incident response procedure for the 3 most likely failure modes with documented detection, diagnosis, and recovery steps, and an on-call guide documenting the operational state of the system (what healthy looks like, what alerts fire under what conditions). Preferred proof: the runbook for a live system you operate. Accessible alternative: a runbook for a real open-source system you have deployed locally (Railway free tier, Render free tier, or similar) — documented evidence of actual deployment required, not a hypothetical. Proof artifacts: deployment procedure document (design artifact) and runbook with rollback procedure (documentation artifact). Verification: someone who has operated production systems reviews 'would I be able to bring this system back up from a cold start using this runbook alone?' and 'what happens if the rollback itself fails?'

Milestone map

Milestone map

3 milestones

Map the system architecture and identify all deployment components

1–2 weeks (system selection + diagram + inventory)

Produce a system architecture diagram and a complete inventory of the deployment components for a real or realistic software system. The system must include at least three distinct components (e.g. a web application, a database, and a background job runner; or a microservice, an API gateway, and a message queue). For each component: identify the runtime environment (container, VM, serverless function, managed service), the configuration sources (environment variables, secrets manager, config files), the dependencies on other components or external services, and the expected steady-state health signals. Free tools: draw.io for the architecture diagram; GitHub or a public git repository for storing the runbook.

Proof required

Submit: (1) an architecture diagram showing all components with their runtime environments and inter-component dependencies labelled (arrows with protocol and direction — e.g. 'HTTPS/443', 'PostgreSQL/5432'); (2) a component inventory table (component name, runtime environment, config sources, dependencies, health signal); (3) a brief scope statement (100–150 words) confirming whether this is a real system you operate or a realistic reference architecture, and why the system has been bounded where it has.

What gets checked

  • Architecture diagram labels every connection with the protocol and port — 'arrow from app to DB' without protocol/port is not an engineering diagram
  • Component inventory table is complete for all components in the diagram — every box in the diagram has a row in the table; missing rows indicate components not understood well enough to document
  • Scope statement addresses the system boundary explicitly — what is inside the runbook scope and what is treated as external (e.g. 'the CDN is treated as external; only the origin servers are in scope')

Common mistakes

  • Selecting a system so simple it has only one component — a single static website with no backend cannot demonstrate the deployment coordination and dependency management that a runbook exists to address
  • Producing a conceptual diagram without operational details — a diagram that shows 'Frontend', 'Backend', 'Database' as boxes without runtime environments, protocols, or ports is a concept diagram, not a deployment architecture diagram

Resources

Foundationstart here

Depthgo deeper

What a verifier looks for

  • Engineering Design Triad: M1 produces a design artifact (architecture diagram + component inventory) — this is the foundation that M2 (runbook procedures) and M3 (incident simulation + report) build on.
  • Every connection in the diagram must be labelled with protocol and port — check that arrows are not bare lines.
  • Component inventory must match the diagram exactly — every box in the diagram has a row; reviewer should cross-check both artefacts.
  • Scope statement must address what is outside the boundary and why — this demonstrates that the author understands the system's operational context, not just its internal structure.
  • Reviewer should be a software engineer or SRE with deployment/operations experience — the operational correctness of the inventory cannot be evaluated without this background.

Write step-by-step runbook procedures for deploy, rollback, and health check

2–3 weeks (procedure authoring + review against the actual system)

Write three runbook sections for the system documented in Milestone 1: (1) a deployment procedure — step-by-step commands and checks to deploy a new version from a known starting state to a known healthy end state; (2) a rollback procedure — step-by-step commands and checks to revert to the previous version if deployment fails; and (3) a health check procedure — the exact commands and expected outputs to confirm the system is healthy at each stage. Every step must be atomic (one action, one check), numbered, and written so that an on-call engineer who did not build the system can execute it without interpretation. Include expected output for every command. Free tool: GitHub Markdown or any public git repository for the runbook.

Proof required

Submit the runbook document containing all three sections. Each step must include: the exact command (or UI action if no CLI is available), the expected output or confirmation signal, and an explicit statement of what to do if the expected output is not seen (escalate, retry, or trigger rollback). If any step requires credentials or secrets, the runbook must reference them by name only (e.g. '`$DB_PASSWORD` from the `prod/database` Vault path') — never inline the actual value.

What gets checked

  • Every step has an expected output — 'Run `kubectl rollout status deployment/app`' without stating the expected output ('Waiting for deployment... successfully rolled out') is an incomplete step; an on-call engineer cannot verify success without the expected signal
  • Rollback procedure starts from the failed deployment state, not from a healthy state — a rollback that assumes you are starting clean has not accounted for the partial-deployment scenario it is intended for
  • No credentials or secrets are inlined — only references to their storage location (Vault path, AWS Secrets Manager ARN, environment variable name) are permitted

Common mistakes

  • Writing the deployment procedure without actually executing it against a test environment and verifying the expected outputs — a runbook written from memory without validation will have wrong expected outputs, which is worse than no runbook because it misleads the on-call engineer
  • Writing rollback as 'revert the deployment' without specifying how — the rollback section must name the exact mechanism (e.g. `kubectl rollout undo`, `git revert` + re-deploy, feature flag toggle + traffic shift) with the specific commands

Resources

Foundationstart here

Depthgo deeper

What a verifier looks for

  • Engineering Design Triad: M2 produces an analysis artifact (the runbook as an operational analysis of the deployment process) — combined with M1's design artifact and M3's documentation artifact, the triad is complete.
  • Every step must have an expected output — reviewer should check a random sample of five steps to confirm this; a step without expected output fails the standard.
  • Rollback must start from a failed/partial deployment state — check that the rollback section explicitly states its starting assumption.
  • Credentials must not be inlined — check for any string resembling a password, API key, or token; only references to secret stores are permitted.
  • Reviewer must have software engineering or SRE/DevOps experience — the procedural correctness of the deploy and rollback steps requires operational domain knowledge.

Conduct a tabletop incident simulation and produce a runbook improvement report

1–2 weeks (simulation session + revision + report)

Use the runbook produced in Milestone 2 as the primary reference for a tabletop incident simulation exercise. An incident simulation involves: a facilitator (not the runbook author) presenting a realistic failure scenario for the system (e.g. 'the deployment is 60% complete and the new pods are crashing with exit code 137; the old version is still handling traffic'); the author walking through the runbook to determine what action to take; and the facilitator probing with follow-up conditions (e.g. 'the rollback command returned an error'). The simulation must cover at least two distinct failure scenarios. After the simulation: identify at least three gaps or ambiguities found (steps that were unclear, expected outputs that were wrong, missing scenarios) and produce a runbook improvement report documenting what was found and what changes were made.

Proof required

Submit: (1) the revised runbook (with tracked changes visible — use GitHub diff, strikethrough in Markdown, or a 'Changes' appendix); (2) a runbook improvement report (300–500 words) covering: the two failure scenarios simulated; at least three specific gaps or ambiguities found; the exact changes made to address each gap; and a statement of what remains out of scope and why.

What gets checked

  • At least three specific gaps are documented with the exact step number and the nature of the ambiguity — 'Step 4 did not specify what to do if the database migration fails mid-run' is a valid gap; 'the runbook could be clearer' is not
  • Changes to the runbook are traceable — the improvement report's gap descriptions must map to visible changes in the revised runbook; a report that lists three gaps but shows no corresponding runbook changes fails the traceability check
  • Out-of-scope statement is explicit and reasoned — 'multi-region failover is out of scope because the system runs in a single region' is an acceptable rationale; omitting an out-of-scope statement implies the runbook covers all scenarios, which no runbook does

Common mistakes

  • Self-facilitating the incident simulation without an external participant — the value of the simulation is that the facilitator knows things the runbook author does not; self-simulation cannot produce the 'follow-up condition' that exposes a gap
  • Producing an improvement report that lists gaps without showing the corresponding runbook changes — a gap finding without a fix is an observation, not an improvement; both parts are required

Resources

Foundationstart here

What a verifier looks for

  • Engineering Design Triad check: M1–M3 together produce a design artifact (architecture diagram + component inventory), an analysis artifact (runbook procedures — an operational analysis of the deployment process), and a documentation artifact (runbook improvement report with traced gap-to-fix mapping) — confirm all three are present.
  • Improvement report must map each gap to a specific step number in the original runbook — check that gap descriptions are locatable in the original document.
  • Runbook changes must be visible and traceable — use GitHub diff link or explicit 'before/after' in the report; invisible changes cannot be verified.
  • Simulation must have had an external facilitator — the submission must name the facilitator by role (e.g. 'senior SRE at my team', 'peer engineer familiar with the system', 'technical colleague who had not read the runbook before the session').
  • Reviewer must have software engineering or SRE/DevOps experience — evaluating the realism of the failure scenarios and the completeness of the gap analysis requires operational domain knowledge.

We use analytics to improve Powstik. No ads, ever.