Chapter 01Current-state assessment and service objectives
How should a DevOps improvement programme begin?
Direct answer: It should begin with a current-state assessment of architecture, delivery flow, failure patterns, ownership, recovery expectations and the service outcomes the organisation wants to improve.
Automation is most useful when it addresses a known source of delay, inconsistency, risk or missing visibility.
Map the path from code change to production, including approvals, credentials, manual hand-offs, environment differences, test evidence, deployment windows, rollback and support escalation.
Create a prioritised improvement backlog that separates immediate stabilisation from foundational changes and optional platform evolution.
Risks include automating a broken process, purchasing tools before defining outcomes, ignoring operational ownership and measuring success only by deployment frequency.
Baseline lead time, change failure, recovery effort, manual steps, environment drift, alert volume and the confidence required to approve a release.
Chapter 02Cloud architecture and environment design
What should cloud environment architecture define?
Direct answer: Cloud architecture should define service boundaries, networks, identities, data stores, configuration, secrets, environments, scaling behaviour, resilience and ownership at a level the operating team can maintain.
A production environment is an operational product with dependencies, cost, security and lifecycle decisions.
Identify workload shape, traffic, data sensitivity, regional needs, external services, recovery objectives, budget boundaries and the difference between development, test and production.
Use repeatable configuration, documented topology, environment-specific values, least-privilege access and managed services where they reduce justified operational burden.
Risks include public exposure by default, shared credentials, untracked manual changes, oversized resources, fragile single points and architecture more complex than the team can diagnose.
Review configuration drift, availability, utilisation, access changes, environment creation time, recovery tests and whether costs can be attributed to useful service boundaries.
Chapter 03Continuous integration and build integrity
What does a good continuous integration pipeline do?
Direct answer: A good continuous integration pipeline turns a known source revision into a reproducible artifact while running fast, relevant checks and preserving evidence that can be reviewed before promotion.
Continuous integration provides fast feedback and protects the shared codebase from changes that cannot be built or validated consistently.
Define branch and review practices, build inputs, dependency handling, test levels, artifact naming, cache use, secret boundaries and the conditions that should stop promotion.
Keep pipeline definitions versioned, build once where practical, store immutable artifacts, surface failures clearly and make local and automated expectations reasonably aligned.
Risks include mutable artifacts, unpinned dependencies, hidden credentials, excessively slow checks, ignored failures and pipeline logic that only one person understands.
Track build success, duration, queue time, flaky checks, artifact traceability, failure causes and how quickly a developer receives useful feedback.
Chapter 04Automated testing and security gates
Where should quality and security checks sit in CI/CD?
Direct answer: Quality and security checks should run as early as useful, with faster deterministic checks before slower environment tests and with release gates proportional to the risk of the change.
A pipeline gate is valuable when it produces actionable evidence and has an understood response, not when it creates noise that teams routinely bypass.
Classify checks by speed, reliability, risk coverage, required environment and ownership, then decide which failures block a change and which create review work.
Combine code quality, unit, integration, selected end-to-end, dependency and configuration checks with clear reports and controlled exceptions.
Risks include false confidence from superficial scans, noisy findings, secrets in logs, broad waivers, brittle end-to-end suites and production promotion despite unresolved mandatory gates.
Review escaped defects, false positives, bypass frequency, remediation time, test stability and whether the gate catches issues at a cheaper stage.
Chapter 05Containerisation and orchestration
When should an application use Docker or Kubernetes?
Direct answer: Docker is useful for consistent packaging and runtime isolation; Kubernetes is useful when orchestration, scaling and service management needs justify its additional operational complexity.
Container adoption should solve deployment and runtime problems rather than become a goal detached from the application.
Examine process model, persistent data, startup, health, resource needs, configuration, networking, security, scaling and the team's ability to operate the chosen platform.
Build small controlled images, run as a non-privileged user where practical, define health signals, separate configuration and keep state in appropriate managed services.
Risks include oversized images, embedded secrets, missing resource limits, unreliable health checks, stateful workloads treated casually and Kubernetes introduced for a single simple service.
Track image build time, vulnerability status, startup time, restart behaviour, resource utilisation, scheduling failures and operator effort.
Chapter 06Continuous delivery and release strategies
How can deployments become safer and more repeatable?
Direct answer: Deployments become safer when the same artifact is promoted through controlled environments, configuration is explicit, health is verified, database changes are compatible and rollback or roll-forward decisions are prepared.
Continuous delivery is a capability for keeping software releasable; it does not require every change to reach users immediately.
Define promotion authority, maintenance windows, compatibility, migration order, health checks, traffic switching, feature controls, communication and recovery criteria.
Use rolling, blue-green, canary or staged release patterns according to architecture and risk, with automated verification and clear stop conditions.
Risks include irreversible schema changes, environment-specific builds, missing rollback data, long-running mixed versions, silent partial failure and release ownership that is unclear during an incident.
Review deployment duration, failure and rollback rate, verification time, customer impact, manual intervention and how accurately release evidence predicts production health.
Chapter 07Observability, logs and actionable alerts
What makes production observability useful?
Direct answer: Observability is useful when operators can connect service health, logs, metrics and request context to answer why a user-facing outcome is slow, failing or behaving unexpectedly.
Collecting telemetry is not enough; signals need consistent meaning, ownership, retention and links to operational decisions.
Identify critical journeys, dependencies, failure modes, service indicators, diagnostic fields, sensitive-data exclusions, alert recipients and the action expected from each alert.
Use structured logs, correlation identifiers, health endpoints, selected metrics, meaningful dashboards and alerts tied to runbooks or investigation paths.
Risks include alert fatigue, high-cardinality cost, sensitive data in logs, dashboards without owners, missing dependency context and thresholds that react to normal variation.
Track alert precision, acknowledgement, diagnosis time, unresolved noisy signals, telemetry cost and the percentage of incidents where existing evidence supported a useful conclusion.
Chapter 08Reliability, backup and disaster recovery
How should cloud reliability and recovery be planned?
Direct answer: Reliability planning should connect failure scenarios to acceptable service impact, recovery time, data loss tolerance, backup design, restoration evidence and the people authorised to act.
A backup is only a potential recovery asset until restoration has been tested under conditions close enough to the real system.
Classify services and data, define realistic recovery objectives, map dependencies, decide redundancy, document degraded modes and identify communication responsibilities.
Automate backups, protect them from the same failure domain, monitor completion, rehearse restoration, record recovery steps and review architecture against material single points.
Risks include successful backup jobs that cannot restore, shared credentials, undocumented dependencies, unrealistic recovery targets, no decision authority and recovery exercises postponed indefinitely.
Use restore success, recovery duration, backup age, data reconciliation, exercise findings, dependency readiness and closure of improvement actions.