31
HOW TO INTRODUCE CONTINUOUS DELIVERY? Alexander Schwartz Nokia Location & Commerce

How to Introduce Continuous Delivery

Embed Size (px)

DESCRIPTION

presented at the conference goto Aarhus 2012

Citation preview

Page 1: How to Introduce Continuous Delivery

HOW TO INTRODUCE CONTINUOUS DELIVERY?

Alexander SchwartzNokia Location & Commerce

Page 2: How to Introduce Continuous Delivery

Which delivery style you have?

www.flickr.com/photos/burtonandy/4702810536/ www.flickr.com/photos/mc_masterchef/178245348/

How to do the transition?

“Big ship” “Kaiten Sushi”

Page 3: How to Introduce Continuous Delivery

What helps?

Page 4: How to Introduce Continuous Delivery

4 Stories: What helps? What not?

Story #1 Story #2 Story #3 Story #4

context #1NOKIA

context #2another company

Page 5: How to Introduce Continuous Delivery

Story #1 Context: Nokia L&C PlacesRESTful services to show Place information on maps applications.

Page 6: How to Introduce Continuous Delivery

Story #1: The Initial Challenges

•complicated dependencies•integration problems•production bugs•big bang releases

Approach: Ask for smart people for help.

-> Delivery Pipelines -> CDCs (Consumer Driven Contracts)

Page 7: How to Introduce Continuous Delivery

From Services Dependencies to Pipelines

Maps app forWindows 7<<device app>>

City Pages<<webapp>>

Maps Web <<webapp>>

Places Backend

APIPBAPI client

API <<client API>>

Account Service<<REST>>

Places Registry<<REST>>

Search<<REST>>

Recommendations<<REST>>

Upstream Downstream

Build Pipeline Order

Page 8: How to Introduce Continuous Delivery

The Result After 1 Year

Component Integration

Shipping QADev

Component

Component

Component Deploy

Component

Co

Test

Test

Test

Deploy Deploy

ManualCo Co

Pipe

line

SN

APSH

OTS

Pipe

line

Re

leas

esDe

v Te

am

builds

Co Co Co

Co Co

Dev

OpsQA Rel. Mg.

Build Mgmt.

Build Mgmt.

Page 9: How to Introduce Continuous Delivery

The Result After 1 Year

Developer buy-inin the ideas

Developer buy-inin implementation

Improvement of Cycle Time

fair

0 %

none

Page 10: How to Introduce Continuous Delivery

Learnings

Bad:• It was build by another

team. • It was build beside the

teams builds.• Big Bang Rollout• no shared responsibility• no proof that it works

Good:• it established a

“we should do...”- CDCs- pipelines- deliver faster

• it fixed other problems: server config, etc.

Page 11: How to Introduce Continuous Delivery

Context: Nokia L&C PlacesRESTful services to show Place information on maps applications.

Story #2

Focus on Delivering

Page 12: How to Introduce Continuous Delivery

What we achieved?

#Releases 5 in 6 month >110 in 6 month

Cycle Time av. approx. 35 days 11 days

Cycle Time min. 1 week 2 hours

Release Success 10 % 97 %

Unplanned Work 80 % 20 %

1 year

Page 13: How to Introduce Continuous Delivery

What helped.... DevQA

Pairing Baby StepsPeople

DevOpsTest Automation

TDD

Kanban Trust

Page 14: How to Introduce Continuous Delivery

Build one team

DevQA

Build Mgmt

Rel.MgtOPS

Dev

Dev

Dev

Dev

Dev

+

Page 15: How to Introduce Continuous Delivery

DevOps + DevQA

Dev QA Ship

Dev OpsQA

Dev OpsQA

Page 16: How to Introduce Continuous Delivery

Focus process: Kanban

Page 17: How to Introduce Continuous Delivery

Focus process: Kanban

Avatar

Page 18: How to Introduce Continuous Delivery

BFocus on the value stream

Main Metric:Release Cycle Time

Page 19: How to Introduce Continuous Delivery

BBAutomation

Automating the wrong thing to early is dangerous

“• Automate

everything you do twice.

• Automation will be your rescue.

www.flickr.com/photos/gibbisons/5538845069/

Page 20: How to Introduce Continuous Delivery

Automation

Our Automation: Full E2E pipeline in one tool, from commit to prod

Page 21: How to Introduce Continuous Delivery

Eat your Own Dog FoodYou understand the value of Continuous Delivery?Use the same principle for your Improvement Process.Baby Steps, Baby Steps, Baby Steps, Baby Steps….

www.flickr.com/photos/mshades/2132689629/

Page 22: How to Introduce Continuous Delivery

Why we should care about fast delivery?

Page 23: How to Introduce Continuous Delivery

DeliverImprove

Firefighting

How to find the balance + rhythm?

Page 24: How to Introduce Continuous Delivery

Context: eBay companybiggest e-commerce market place for vehicles in Germany

Story #3

Page 25: How to Introduce Continuous Delivery

The Architecture– eBay “pillar architecture”

(every major use case is separate)– a lot of shared code– big domain model– typical change:

• impacts one component• the domain model• full rollout

– big bang rollouts, no downtime– deployment army

shared code

DB

web app for a single use case, e.g. “search”

Page 26: How to Introduce Continuous Delivery

What we achieved?

#Releases every 2-3 weeks every week

Cycle Time av. 10-30 days 30 days

Cycle Time min. 30 days 10 days

External quality room for improvement

room for improvement

2 years

Page 27: How to Introduce Continuous Delivery

Story #4 Context: eBay companybiggest e-commerce market place for vehicles in Germany

Why don’t just skip the hardening phase?

Page 28: How to Introduce Continuous Delivery

What we achieved?

#Releases every 2-3 weeks 4-8 per week

Cycle Time av. 10-30 days 1-5 days

Cycle Time min. 30 days 2 hours

External quality room for improvement

pretty good

3 years

Page 29: How to Introduce Continuous Delivery

What helped....

A huge step

Baby Steps Test Automation

Kanban

- make the right thing easy- share responsibility- cross-functional teams

Page 30: How to Introduce Continuous Delivery

4 Stories: What helps? What not?

Story #1 Story #2 Story #3 Story #4

Huge Step

Disruptive Change

Baby Steps

Continuous Improvement

Baby StepsHuge Step

Page 31: How to Introduce Continuous Delivery

Questions?

Alexander Schwartztwitter: @alexschwartzblne-mail: [email protected]