Download - Continous Delivery in Action

Transcript
Page 1: Continous Delivery in Action

CONTINUOUS DELIVERY

in Action

by Hu Zhenbo (Andy) ThoughtWorks

Friday, April 27, 2012

Page 2: Continous Delivery in Action

History

Friday, April 27, 2012

Page 3: Continous Delivery in Action

years

4

Friday, April 27, 2012

Page 4: Continous Delivery in Action

Millions

0

25

50

75

100

2008 2009 2010 2011

Page Views/Day

Friday, April 27, 2012

Page 5: Continous Delivery in Action

0

17.5

35

52.5

70

2008 2009 2010 2011

Team Size70+

Friday, April 27, 2012

Page 6: Continous Delivery in Action

2008 2009 2010 2011

Features Delivered Days between major releases

Friday, April 27, 2012

Page 7: Continous Delivery in Action

major releases per year

3

Friday, April 27, 2012

Page 8: Continous Delivery in Action

days to deploy

20

Friday, April 27, 2012

Page 9: Continous Delivery in Action

people involved in deployment

30

Friday, April 27, 2012

Page 10: Continous Delivery in Action

Angry CustomerFriday, April 27, 2012

Page 11: Continous Delivery in Action

Sad TeamFriday, April 27, 2012

Page 12: Continous Delivery in Action

Why?

Friday, April 27, 2012

Page 13: Continous Delivery in Action

RequirementFriday, April 27, 2012

Page 14: Continous Delivery in Action

Fragile SystemFriday, April 27, 2012

Page 15: Continous Delivery in Action

Deploy to DeathFriday, April 27, 2012

Page 16: Continous Delivery in Action

2008 2009 2010 2011 2012

Features Delivered Days between major releases

Friday, April 27, 2012

Page 17: Continous Delivery in Action

delivery frequency

every 1 or 2 week

Friday, April 27, 2012

Page 18: Continous Delivery in Action

days to deploy

0.5

Friday, April 27, 2012

Page 19: Continous Delivery in Action

person dedicated for deployment

1

Friday, April 27, 2012

Page 20: Continous Delivery in Action

How’d we do it?

Friday, April 27, 2012

Page 21: Continous Delivery in Action

One TeamFriday, April 27, 2012

Page 22: Continous Delivery in Action

CollaborationFriday, April 27, 2012

Page 23: Continous Delivery in Action

Friday, April 27, 2012

Page 24: Continous Delivery in Action

Friday, April 27, 2012

Page 25: Continous Delivery in Action

Incremental Developing

Decode 4 types of data

21 pts

Friday, April 27, 2012

Page 26: Continous Delivery in Action

Incremental Developing

Decode 4 types of data

21 pts

Design

5 pts

Framework

8 pts

Decode Data

8 pts

Friday, April 27, 2012

Page 27: Continous Delivery in Action

Incremental Developing

Decode 4 types of data

21 pts

Decode Data A

8 pts

Decode Data C

5 pts

Decode Data B

5 pts

Decode Data D

3 pts

Friday, April 27, 2012

Page 28: Continous Delivery in Action

Feature ToggleFriday, April 27, 2012

Page 29: Continous Delivery in Action

Feature ToggleFriday, April 27, 2012

Page 30: Continous Delivery in Action

Feature Toggle

# Feature TogglenonRealTimeRecharge = truerealTimeRecharge = false

Config File #if( $nonRealTimeRecharge )

<div>非即时到帐</div><div> ...

#end

#if( $realTimeRecharge ) <div>即时到帐</div> <div> ...#end

Page File

Friday, April 27, 2012

Page 31: Continous Delivery in Action

Deployment Pipeline

Commit Stagecompileanalysisunit test

...

Acceptance Test Stage

User Acceptance Testing

exploratory test...

Non-Functional Testing

performance test...

Production

Increasing confidence in build’s production readiness

Environment become more production-like

Slower Feedback

Friday, April 27, 2012

Page 32: Continous Delivery in Action

Deployment PipelineFriday, April 27, 2012

Page 33: Continous Delivery in Action

Auto-Deploy

Code Change

JarCommit

Jar

Update Portal

DependenZIP Upload

Stop Server

Unzip ConfigCreate

Log FileStart

ServerBackup

Friday, April 27, 2012

Page 34: Continous Delivery in Action

Auto-Deploy

Code Change

JarCommit

Jar

Update Portal

DependenZIP Upload

Stop Server

Unzip ConfigCreate

Log FileStart

ServerBackup

Friday, April 27, 2012

Page 35: Continous Delivery in Action

Auto-Deploy

Code Change

JarCommit

Jar

Update Portal

DependenZIP Upload

Stop Server

Unzip ConfigCreate

Log FileStart

ServerBackup

One-click Deploy

Friday, April 27, 2012

Page 36: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 37: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 38: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 39: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 40: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 41: Continous Delivery in Action

Components & Dependencies

Common Core

Payment

Account

Order

Portal

Admin

Mobile

Friday, April 27, 2012

Page 42: Continous Delivery in Action

Test QuadrantsFriday, April 27, 2012

Page 43: Continous Delivery in Action

Test Pyramid

AutomatedGUI Tests

API Tests

Integration Tests

Component Tests

Automated Unit Tests

ManualSessionBasedTesting

Friday, April 27, 2012

Page 44: Continous Delivery in Action

Deployment Test system configuration component communication service is up and running ...

Acceptance Test

Friday, April 27, 2012

Page 45: Continous Delivery in Action

Performance TestFriday, April 27, 2012

Page 46: Continous Delivery in Action

Blue-Green Deploy

WebServer

AppServer

DBServer

Router

Friday, April 27, 2012

Page 47: Continous Delivery in Action

Blue-Green Deploy

WebServer

AppServer

DBServer

v5.1 v5.1 v5.1

Router

Friday, April 27, 2012

Page 48: Continous Delivery in Action

Blue-Green Deploy

WebServer

AppServer

DBServer

v5.1 v5.1 v5.1

Router

Friday, April 27, 2012

Page 49: Continous Delivery in Action

Blue-Green Deploy

WebServer

AppServer

DBServer

v5.1 v5.1 v5.1

v5.2 v5.2 v5.2

Router

Friday, April 27, 2012

Page 50: Continous Delivery in Action

Blue-Green Deploy

WebServer

AppServer

DBServer

v5.1 v5.1 v5.1

v5.2 v5.2 v5.2

Router

Friday, April 27, 2012

Page 51: Continous Delivery in Action

Data Migration

migrate - 001_create_products_table.sql - 002_add_column_to_products.sql - 003_update_data_for_products.sql

rollback - 001_create_products_table.sql - 002_add_column_to_products.sql - 003_update_data_for_products.sql

Friday, April 27, 2012

Page 52: Continous Delivery in Action

Green Database

v5.1

Friday, April 27, 2012

Page 53: Continous Delivery in Action

Green Database

v5.1readonly

Friday, April 27, 2012

Page 54: Continous Delivery in Action

Green Database

v5.1 v5.1

Backup

readonly

Friday, April 27, 2012

Page 55: Continous Delivery in Action

Green Database

v5.1 v5.1

Backup

v5.2

Migrate

readonly

Friday, April 27, 2012

Page 56: Continous Delivery in Action

Decouple App & Database

v5.1 v5.2 v5.3

v5.2 v5.3

compatible with db 5.1 & 5.2 compatible with db 5.2 & 5.3

Friday, April 27, 2012

Page 57: Continous Delivery in Action

Production Monitoring

HardwareOS

MiddlewareApplication

Voltage

Fan Speed

Temperature

CPU

Memory

HTTP

Disk

DB

DNS

SMTP

Friday, April 27, 2012

Page 58: Continous Delivery in Action

Production MonitoringFriday, April 27, 2012

Page 59: Continous Delivery in Action

Cross Functional TeamContinuous IntegrationIncremental Developing

Feature ToggleAutomate DeploymentDeployment Pipeline

Blue-Green DeploymentDatabase Migration

Production Monitoring...

Weekly Release

Friday, April 27, 2012

Page 60: Continous Delivery in Action

Good Enough?

Friday, April 27, 2012

Page 61: Continous Delivery in Action

A Long Way to Go

http://code.flickr.com/

Friday, April 27, 2012

Page 62: Continous Delivery in Action

Big ReleaseFriday, April 27, 2012

Page 63: Continous Delivery in Action

Continuous DeliveryFriday, April 27, 2012

Page 64: Continous Delivery in Action

blue-green deployment

canary releases

data management

dark launch

build pipeline

automatic deployment

branch by abstraction

DevOps

acceptancetest

virtualization

configurationmanagement

Version ControlSystem

could computinginfrastructure as code

Friday, April 27, 2012

Page 65: Continous Delivery in Action

Q & A

weibo: @HuZhenbo

Friday, April 27, 2012