Scaled Agile Release Strategy

Report
Scaled Agile Release Strategy
Presented By:
James Carpenter
Goal: Delight customer
with frequent high-quality
production releases.
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?
Feature Toggles
Mainline
(no toggles)
Mainline
(with toggles)
Feature A
Feature B
Feature A
Feature B
If( cfg.isFeatureAEnabled() )
{
//new behavior
} else {
//old behavior
}
Goal: Delight customer with frequent high-quality production releases.
Stateless Services
Server
Node 1
Node
Affinity
Req. 2
Client
Load
Balancer
Server
Node 2
Server
Node 3
Goal: Delight customer with frequent high-quality production releases.
Wire Protocols
V5
Older
Server
(v5)
Older
Client
(v5)
V5
Goal: Delight customer with frequent high-quality production releases.
V5
Older
Server
(v5)
Older
Client
(v5)
V5
V6
Newer
Server
(v6)
Newer
Client
(v6)
V6
Goal: Delight customer with frequent high-quality production releases.
V5
Older
Server
(v5)
Older
Client
(v5)
V5
V6
Newer
Server
(v5&6)
Newer
Client
(v6)
V6
Goal: Delight customer with frequent high-quality production releases.
Deployment
Cadence
Scrum Team 1
System A
Code
Scrum Team 2
System B
Code
Goal: Delight customer with frequent high-quality production releases.
Mainline
System A
DC-A 2.3
DC-A 2.2
DC-A 2.1
DC-A 1.2
DC-A 1.1
Mainline
System B
Scrum Team 1 & 2
DC-B 1.2
DC-B 1.1
Goal: Delight customer with frequent high-quality production releases.
Team 1
(Scrum)
Team 2
(Scrum)
System A
Code
3rd Party 1
(Crazy)
3rd Party 2
(RUP)
Team 3
(Kanban)
Team 4
(Waterfall)
System B
Code
Remote
(XP)
Team 8
(RUP)
Automated Load Tests (1 day)
Manual Smoke Test (3 hours)
Automated GUI Tests (2 hours)
Automated Integration Tests (1 hour)
Automated Unit Tests (5 minutes)
Mainline
System A
Mainline
System B
RIP
DC-A 2.3
DC-A 2.2
DC-A 2.1
All Teams
RIP
DC-A 1.2
DC-A 1.1
RIP
DC-B 1.2
DC-B 1.1
Goal: Delight customer with frequent high-quality production releases.
Mainline
System A
Mainline
System A
RIP
DC-A 2.3
DC-A 2.3
DC-A 2.2
DC-A 2.1
DC-A 2.2
DC-A 2.1
RIP
DC-A 1.2
DC-A 1.2
DC-A 1.1
DC-A 1.1
Goal: Delight customer with frequent high-quality production releases.
X1
Y1
Client
LB
X2
DB-X
LB
X3
Y2
Y3
Z1
LB
Z2
DB-Z
Z3
Goal: Delight customer with frequent high-quality production releases.
DB-Y
System is Online
With Old Version
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Define
Feature Toggle in
Off Position
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
X1
Client
LB
X2
Execute
Pre-Deploy
DB Script
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Remove X1
From
Rotation
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Shutdown X1
X1
Client
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Upgrade X1
X1
Client
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Startup X1
X1
Client
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Place X1
Back Into
Rotation
Client
X1
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Remove X2
From
Rotation
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Shutdown X2
X1
LB
X2
Client
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Upgrade X2
Client
X1
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Startup X2
Client
X1
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Place X2
Back Into
Rotation
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Remove X3
From
Rotation
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
X1
Client
LB
X2
DB-X
Shutdown X3
X3
Goal: Delight customer with frequent high-quality production releases.
X1
Client
LB
X2
DB-X
Upgrade X3
X3
Goal: Delight customer with frequent high-quality production releases.
X1
Client
LB
X2
DB-X
Startup X3
X3
Goal: Delight customer with frequent high-quality production releases.
Place X3
Back Into
Rotation
Client
X1
LB
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
X1
Client
LB
X2
Execute
Post-Deploy
DB Script
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
Flip
Feature Toggle to
On Position
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
System is Online
With New Version
Client
LB
X1
X2
DB-X
X3
Goal: Delight customer with frequent high-quality production releases.
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
[email protected]
http://www.linkedin.com/in/jamescarpenter1

similar documents