velocity 2011: production begins in development

57
Production Begins in Development Lee Thompson Damon Edwards

Upload: dev2ops

Post on 08-May-2015

3.207 views

Category:

Technology


0 download

DESCRIPTION

Velocity 2011 presentation by Damon Edwards and Lee Thompson

TRANSCRIPT

Page 1: Velocity 2011: Production Begins in Development

Production Begins in Development

Lee Thompson Damon Edwards

Page 2: Velocity 2011: Production Begins in Development

• CTO Travel/Transportation Products, Hewlett Packard

• Former Chief Technologist, E*TRADE Financial

• Co-writer of “Fully Automated Provisioning” whitepaperLee Thompson

@stagr_lee

Page 3: Velocity 2011: Production Begins in Development

• Co-founder DTO Solutions

• DevOps Days organizer

• Co-writer of “Fully Automated Provisioning” whitepaper

Damon Edwards@damonedwards

Page 4: Velocity 2011: Production Begins in Development

• Co-founder DTO Solutions

• DevOps Days organizer

• Co-writer of “Fully Automated Provisioning” whitepaper

Damon Edwards@damonedwards

Page 5: Velocity 2011: Production Begins in Development

• Consumer-facing web applications

• Webtone utilities

Page 6: Velocity 2011: Production Begins in Development

Showing us what is possible...

Clouds

Lean Startup

Continuous Delivery/Deployment

Page 7: Velocity 2011: Production Begins in Development

What we want more of...

DevOps!

Page 8: Velocity 2011: Production Begins in Development

The Rise of a New IT Operations Support Model

!"#$%&'(#)*+,-.#/011#*+21+*#3425#6#7089*#.:46:*;"#*5-12"*<#="#164;*#812><#-42+0<*4.#07:2#6#5607.:4*65#.:46:*;"#*5-12"*<#

=" $%? 23 @12=61 $%%% 24;670A6:027.

Why DevOps will emerge:

!)*+,-. 0. 72: >.>611" <40+*7 3425

Why DevOps will not emerge:

!B>1:>461 8967;*. 64* :9* 964<*.: :2

="#$%?#23#@12=61#$%%%#24;670A6:027.C

!)*+,-.#0.#72:#>.>611"#<40+*7#3425#:9*#:2-#<2/7#67<(#:9>.(#56"#=*#524*#*6.01"#688*-:*<#="#DE#2-*46:027.#:*65.C

!B>1:>461#8967;*.#64*#:9*#964<*.:#:2#05-1*5*7:(#67<#)*+,-.#4*F>04*.#6#.0;7030867:#4*:907G07;#23#DE#2-*46:027.#827+*7:02761#/0.<25C

!DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#64*#68G72/1*<;*<#:2#96+*#72:#<*10+*4*<#27#:9*04#;261.(#*76=107; DE 24;670A6:027. :2 122G 324

!E9*4*#0.#6#164;*#=2<"#23#/24G#/0:9#4*.-*8:#:2#DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#:96:#0.#614*6<"#688*-:*< /0:907 :9* 07<>.:4" *76=107;#DE#24;670A6:027.#:2#122G#324#

7*/#52<*1.C

!E9*#;42/07;#07:*4*.:#07#:221.#.>89#6.#B9*3(#I>--*:(#*:8C(#/011#9*1-#

688*-:*<#/0:907#:9*#07<>.:4"C

!,-*7#.2>48*#J,KKL#5676;*5*7:#:221.(#/9089#64*#524*#610;7*<#/0:9#:90.#6--42689(#96+*#72:#.**7# -- -

.:05>16:*#<*567<#324#,KKM=6.*<#5676;*5*7:

--.0;7030867:#*7:*4-40.*#564G*:#.964*#:468:027C

DevOps. DevOps. DevOps. DevOps. DevOps.

Page 9: Velocity 2011: Production Begins in Development

The Rise of a New IT Operations Support Model

!"#$%&'(#)*+,-.#/011#*+21+*#3425#6#7089*#.:46:*;"#*5-12"*<#="#164;*#812><#-42+0<*4.#07:2#6#5607.:4*65#.:46:*;"#*5-12"*<#

=" $%? 23 @12=61 $%%% 24;670A6:027.

Why DevOps will emerge:

!)*+,-. 0. 72: >.>611" <40+*7 3425

Why DevOps will not emerge:

!B>1:>461 8967;*. 64* :9* 964<*.: :2

="#$%?#23#@12=61#$%%%#24;670A6:027.C

!)*+,-.#0.#72:#>.>611"#<40+*7#3425#:9*#:2-#<2/7#67<(#:9>.(#56"#=*#524*#*6.01"#688*-:*<#="#DE#2-*46:027.#:*65.C

!B>1:>461#8967;*.#64*#:9*#964<*.:#:2#05-1*5*7:(#67<#)*+,-.#4*F>04*.#6#.0;7030867:#4*:907G07;#23#DE#2-*46:027.#827+*7:02761#/0.<25C

!DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#64*#68G72/1*<;*<#:2#96+*#72:#<*10+*4*<#27#:9*04#;261.(#*76=107; DE 24;670A6:027. :2 122G 324

!E9*4*#0.#6#164;*#=2<"#23#/24G#/0:9#4*.-*8:#:2#DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#:96:#0.#614*6<"#688*-:*< /0:907 :9* 07<>.:4" *76=107;#DE#24;670A6:027.#:2#122G#324#

7*/#52<*1.C

!E9*#;42/07;#07:*4*.:#07#:221.#.>89#6.#B9*3(#I>--*:(#*:8C(#/011#9*1-#

688*-:*<#/0:907#:9*#07<>.:4"C

!,-*7#.2>48*#J,KKL#5676;*5*7:#:221.(#/9089#64*#524*#610;7*<#/0:9#:90.#6--42689(#96+*#72:#.**7# -- -

.:05>16:*#<*567<#324#,KKM=6.*<#5676;*5*7:

--.0;7030867:#*7:*4-40.*#564G*:#.964*#:468:027C

DevOps. DevOps. DevOps. DevOps. DevOps.The Rise of a New IT Operations Support Model

!"#$%&'(#)*+,-.#/011#*+21+*#3425#6#7089*#.:46:*;"#*5-12"*<#="#164;*#812><#-42+0<*4.#07:2#6#5607.:4*65#.:46:*;"#*5-12"*<#

=" $%? 23 @12=61 $%%% 24;670A6:027.

Why DevOps will emerge:

!)*+,-. 0. 72: >.>611" <40+*7 3425

Why DevOps will not emerge:

!B>1:>461 8967;*. 64* :9* 964<*.: :2

="#$%?#23#@12=61#$%%%#24;670A6:027.C

!)*+,-.#0.#72:#>.>611"#<40+*7#3425#:9*#:2-#<2/7#67<(#:9>.(#56"#=*#524*#*6.01"#688*-:*<#="#DE#2-*46:027.#:*65.C

!B>1:>461#8967;*.#64*#:9*#964<*.:#:2#05-1*5*7:(#67<#)*+,-.#4*F>04*.#6#.0;7030867:#4*:907G07;#23#DE#2-*46:027.#827+*7:02761#/0.<25C

!DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#64*#68G72/1*<;*<#:2#96+*#72:#<*10+*4*<#27#:9*04#;261.(#*76=107; DE 24;670A6:027. :2 122G 324

!E9*4*#0.#6#164;*#=2<"#23#/24G#/0:9#4*.-*8:#:2#DEDH#67<#2:9*4#=*.:#-468:08*.#3465*/24G.#:96:#0.#614*6<"#688*-:*< /0:907 :9* 07<>.:4" *76=107;#DE#24;670A6:027.#:2#122G#324#

7*/#52<*1.C

!E9*#;42/07;#07:*4*.:#07#:221.#.>89#6.#B9*3(#I>--*:(#*:8C(#/011#9*1-#

688*-:*<#/0:907#:9*#07<>.:4"C

!,-*7#.2>48*#J,KKL#5676;*5*7:#:221.(#/9089#64*#524*#610;7*<#/0:9#:90.#6--42689(#96+*#72:#.**7# -- -

.:05>16:*#<*567<#324#,KKM=6.*<#5676;*5*7:

--.0;7030867:#*7:*4-40.*#564G*:#.964*#:468:027C

Page 10: Velocity 2011: Production Begins in Development

Measuring success...

Quality

Alignment

Cycle Time

Page 11: Velocity 2011: Production Begins in Development

Know what kind of business you are

Page 12: Velocity 2011: Production Begins in Development

What is your tolerance for...

Risk

Change

Page 13: Velocity 2011: Production Begins in Development

Consumer-facing applications...

"Move fast and break things. Unless you are breaking stuff,

you are not moving fast enough."-Mark Zuckerberg

Page 14: Velocity 2011: Production Begins in Development

Consumer-facing applications...

"Move fast and break things. Unless you are breaking stuff,

you are not moving fast enough."-Mark Zuckerberg

Page 15: Velocity 2011: Production Begins in Development

Webtone utilities...

Page 16: Velocity 2011: Production Begins in Development

Webtone utilities...

Page 17: Velocity 2011: Production Begins in Development

Webtone utilities...

Page 18: Velocity 2011: Production Begins in Development

Webtone utilities...

Page 19: Velocity 2011: Production Begins in Development

Webtone utilities...

Page 20: Velocity 2011: Production Begins in Development

What do you want...

Page 21: Velocity 2011: Production Begins in Development

What do you want...

Page 22: Velocity 2011: Production Begins in Development

What do you want...

Page 23: Velocity 2011: Production Begins in Development

What do you want...

Page 24: Velocity 2011: Production Begins in Development

What do you want...

Page 25: Velocity 2011: Production Begins in Development

What do you want...

Page 26: Velocity 2011: Production Begins in Development

What do you want...

Page 27: Velocity 2011: Production Begins in Development

What do you want...

Page 28: Velocity 2011: Production Begins in Development

Quality

Alignment

Cycle Time

Clouds

DevOps

Lean Startup

Continuous Delivery/Deployment

Page 29: Velocity 2011: Production Begins in Development

It all starts in Development

Page 30: Velocity 2011: Production Begins in Development

It all starts in Development

But what do we tell them to do and how do we get them to do it?

Page 31: Velocity 2011: Production Begins in Development

Share ownership of availability

• Developers must wear pagers

• Incident command training so everyone knows their roles

• Notification mechanism? Access provisioning?

Page 32: Velocity 2011: Production Begins in Development

Non-functional requirements are first class citizens

• All of the “-ility” requirements

• As much a part of your service as the businessʼs functional requirements

• Manage through same process

• Make sure they are on the schedule

• Donʼt over commit

Page 33: Velocity 2011: Production Begins in Development

Strive for parity between dev & prod

• Develop test data fixtures for all environments

• Implement Mock Services for major infrastructure pieces for Developer user.

• Continuous integration means integrate early

• Use the deployment, config, and packaging tools in dev

Page 34: Velocity 2011: Production Begins in Development

Push config management discipline back to Dev

• Dev is about creating variation, Ops is about eliminating variation

• Augment deployment toolchain to support the variation

• Do developers use the tools?• Do developers like them?• Devʼs need config too• Accept config contributions and patches

from dev

Page 35: Velocity 2011: Production Begins in Development

Packaging... itʼs not just for the OS• If you want to be a high performing web

operations organization, you need to take change management seriously.

• Strict versioning is needed, and package managers do that.

• Itʼs about being idempotent.

• Transfer packaging responsibility to dev

• Define the packaging constructs you will support

http://webscalebook.com

Page 36: Velocity 2011: Production Begins in Development

Config is code• if itʼs code it needs to be managed like

code...

• Should be transparent and identical SDLC in both dev and ops

• Avoid or eliminate asymetric release processes

Page 37: Velocity 2011: Production Begins in Development

Tailor release artifacts to roles• “Small teams make better software”• Make sure one team getting stuck doesnʼt

prevent another team to release (org coupling)

• Large codebases suffer software entropy effects

• Build an infrastructure that can reliably manage lots of smaller artifacts

• Org conflict is a good time to suggest breaking up a codebase into separate concerns

Page 38: Velocity 2011: Production Begins in Development

Standard management vocabulary

• Consistent and expected management behavior

• Across components and releases

• “start, stop, status, update, install...”

Page 39: Velocity 2011: Production Begins in Development

Rollback• Rollback that works

• No, really works

• Seriously, really really works

• You say it will work? Test it right now

Page 40: Velocity 2011: Production Begins in Development

Standard metrics abstractions• Dev surface metrics to Ops

• Avoid the back and forth conversations

• Use a standard framework

• Use standard types (gague, counter, timer...)

• Ops knows what to expect and how to visualize

https://github.com/codahale/metrics

Page 41: Velocity 2011: Production Begins in Development

Push test ownership to the edges• QA is “Quality Assurance”

• QA writing tests = bottleneck

• QA writing tests = avoiding responsibility

• QA is architecture / tooling / assurance

• Test Driven Development

• Test Driven Operations (yes, you too)

• Bottom line: Everyone owns quality.

Page 42: Velocity 2011: Production Begins in Development

Test outside of the box

Crowd Test Simulate

Page 43: Velocity 2011: Production Begins in Development

Simulation

AUT

Page 44: Velocity 2011: Production Begins in Development

Build the right lifecycle...

Quality

Alignment

Cycle Time

Page 45: Velocity 2011: Production Begins in Development

Continuous Delivery...

Page 46: Velocity 2011: Production Begins in Development

Continuous Delivery...

AutomatedTesting

AutomatedRelease

Deployment...

Page 47: Velocity 2011: Production Begins in Development

Donʼt be so dogmatic

Page 48: Velocity 2011: Production Begins in Development

Decoupled Release Model Example

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Page 49: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Decoupled Release Model Example

Page 50: Velocity 2011: Production Begins in Development

Bootstrap

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

Page 51: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Decoupled Release Model Example

Page 52: Velocity 2011: Production Begins in Development

Develop

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Page 53: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Decoupled Release Model Example

Page 54: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Release

Page 55: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Decoupled Release Model Example

Page 56: Velocity 2011: Production Begins in Development

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

Operate

Page 57: Velocity 2011: Production Begins in Development

Repo

Audit

Release

ReleaseRepoA

OS

services

app code

ReleaseRepoC

ReleaseRepoB

Sandbox

Validate

Release

"Check for conflicts and

run validation scripts"

Package Manifest

SouceRepo

"Check-in"

Promote

Job

ReleaseRepoA

ReleaseRepoC

ReleaseRepoBProd

Repo

"Promote release"

1

2

3

4

Hudson

ReleaseRepoB

ReleaseRepoC

ReleaseRepoA

"Determine what packages

and versions are available"

ProdReleaseRepo

Prod

Chef

RightScale

Rundeck

"yum install"

Deploy

Job

5

Bootstrap Develop Release Operate

Prod

Chef

RightScale

Rundeck

Monitor

Jobs &

Adhoc

CommandsOperate

1

2

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Rundeck

Instance

CI Server

Instance

Staging

Release

Repo

Prod

Release

RepoDev Test

Monitoring

& Testing

Operations

Rundeck

"Auto-Deploy

New App

Infrastructure

1Source

Repo

Chef

Instance

AutomaticDeployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3Automatic

Deployment

WatchCode

Build

UnitTests

PublishResults

Continuous

Deployment

LoopIntegration Testing

Source

Repo

Package Manifest

Code, Config, Control

"Check-in"

Develop

"Check-in"

Dev Test

"Check-out"

"Verify"

Release

Repo

A"Promote"

1

2

3

Decoupled Release Model Example