13 Architecting for the Delivery Lifecycle (CI/CD): Building Automated Gates for High-Velocity Software Delivery
This chapter covers
- Designing for Deployability: Why your architecture dictates your release pipeline.
- Navigating network deployment strategies and feature flags.
- Implementing Automated Guardrails and progressive Environment Promotion.
- DORA Metrics as an architectural feedback system.
- The Dork Side: How a single deployment error bankrupted a company in 45 minutes.
13.1 Introduction
Up to this point in our architectural journey, we have focused almost entirely on what your software looks like when it is sitting still. We designed a clean, protected domain core using Hexagonal Architecture (Chapter 5). We organized data patterns across SQL and NoSQL engines (Chapter 8). We even mapped out how services communicate across network boundaries, weighing the structural tradeoffs between monoliths and microservices (Chapter 12).
But software does not sit still since the business is constantly changing. Software is an active, evolving lifecycle. It must be written, tested, packaged, deployed, updated, and occasionally rolled back when things break.
13.2 Designing for Deployability: Why Architecture Dictates Your Release Pipeline
13.3 Deployment Strategies: Shifting Traffic Without Breaking Hearts
13.3.1 Rolling Updates: The Assembly Line
13.3.2 Blue-Green Deployment: The Parallel Worlds
13.3.3 Canary Deployments: The Early Warning System
13.3.4 Deployment vs. Release: The Feature Flag Distinction
13.3.5 How Do I Decide Which Deployment Strategy is Best?
13.4 Architecture Governance: Automated Guardrails
13.4.1 Paying Off the Receipt: Architectural Fitness Functions
13.4.2 Enforcing Boundaries in the Code
13.4.3 The Database Evolution: The Expand/Contract Pattern
13.4.4 Common Pitfalls When Setting Up Automated Guardrails
13.5 Diagram: CI/CD Pipeline: The Conveyor Belt of Truth
13.5.1 Walking Through the Automated Machinery
13.5.2 Architectural Philosophy: Roll Forward vs. Rollback
13.6 Code Snippet: GitHub Actions YAML
13.7 Environment Promotion as Architectural Confidence
13.7.1 The Defensive Toolkit: Navigating the Staging Conversation
13.8 DORA Metrics: Your Architecture's Report Card
13.9 The Dork Side: The $440M Deployment Error
13.9.1 The Setup: Reviving a Dead Engine
13.9.2 The Autopsy: 45 Minutes of Unchecked Fire
13.9.3 The Architectural Retrospective: What Went Wrong and How to Prevent It
13.9.4 Defending "-ilities" Against Short-Term Feature Pressure
13.10 Your "In Action" Mission: Diagramming CI/CD
13.10.1 The Scenario