Goal: Delight customer with frequent high-quality production releases. Scaled Agile Release Strategy Presented By: James Carpenter
Goal: Delight customer with frequent high-quality production releases.
Focus On the Goal
Hot Deploy Rollback Strategy Cadence Good Testing
Feature Toggles Stateless SOA Backward Compatible Protocols Independent Deployment Cadence?
Goal: Delight customer with frequent high-quality production releases. Feature Toggles Mainline (no toggles) Feature B Feature A Feature B Feature A Mainline (with toggles) If( cfg.isFeatureAEnabled() ) { //new behavior } else { //old behavior }
Goal: Delight customer with frequent high-quality production releases. Stateless Services Load Balancer Req. 1 Req. 2 Node Affinity Client Server Node 1 Server Node 2 Server Node 3
Wire Protocols V5 Older Server (v5) Older Client (v5) Goal: Delight customer with frequent high-quality production releases.
V5 Older Server (v5) Older Client (v5) Newer Server (v6) Newer Client (v6) V6 Goal: Delight customer with frequent high-quality production releases.
V5 Older Server (v5) Older Client (v5) Newer Server (v5&6) Newer Client (v6) V5 V6 Goal: Delight customer with frequent high-quality production releases.
Deployment Cadence
Scrum Team 1Scrum Team 2 System A Code System B Code Goal: Delight customer with frequent high-quality production releases.
Mainline System A DC-A 1.1 DC-A 1.2 DC-A 2.1 DC-A 2.2 DC-A 2.3 Scrum Team 1 & 2 Mainline System B DC-B 1.1 DC-B 1.2 Goal: Delight customer with frequent high-quality production releases.
Team 2 (Scrum) System A Code System B Code Team 3 (Kanban) Team 1 (Scrum) Team 4 (Waterfall) 3 rd Party 1 (Crazy) 3 rd Party 2 (RUP) Remote (XP) Team 8 (RUP)
Automated Unit Tests (5 minutes) Automated Integration Tests (1 hour) Automated GUI Tests (2 hours) Manual Smoke Test (3 hours) Automated Load Tests (1 day)
Mainline System A DC-A 1.1 DC-A 1.2 DC-A 2.1 DC-A 2.2 DC-A 2.3 All Teams Mainline System B DC-B 1.1 DC-B 1.2 RIP Goal: Delight customer with frequent high-quality production releases.
Mainline System A DC-A 1.1 DC-A 1.2 DC-A 2.1 DC-A 2.2 DC-A 2.3 RIP Mainline System A DC-A 1.1 DC-A 1.2 DC-A 2.1 DC-A 2.2 DC-A 2.3 Goal: Delight customer with frequent high-quality production releases.
Client LB X1 X2 X3 DB-X LB Y1 Y2 Y3 DB-Y LB Z1 Z2 Z3 DB-Z
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X System is Online With Old Version
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Define Feature Toggle in Off Position
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Execute Pre-Deploy DB Script
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Remove X1 From Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Shutdown X1
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Upgrade X1
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Startup X1
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Place X1 Back Into Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Remove X2 From Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Shutdown X2
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Upgrade X2
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Startup X2
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Place X2 Back Into Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Remove X3 From Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Shutdown X3
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Upgrade X3
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Startup X3
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Place X3 Back Into Rotation
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Execute Post-Deploy DB Script
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X Flip Feature Toggle to On Position
Goal: Delight customer with frequent high-quality production releases. Client LB X1 X2 X3 DB-X System is Online With New Version
1.Define Feature Toggles (Toggles: Off) 2.Execute Pre-Deploy DB Script 3.Per-Node Deployment a.Remove from rotation b.Shutdown c.Upgrade d.Startup e.Return to rotation 4.Execute Post-Deploy DB Script 5.Feature Toggles On
Partial Deployment Minimize Permutations Rollback Automation Momentum Abandoned Toggles
Questions? James Carpenter