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

Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

HOW TO INTRODUCE CONTINUOUS DELIVERY?

Alexander SchwartzNokia Location & Commerce

Page 2: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

What helps?

Page 4: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

4 Stories: What helps? What not?

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

context #1NOKIA

context #2another company

Page 5: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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

Page 6: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

The Result After 1 Year

Developer buy-inin the ideas

Developer buy-inin implementation

Improvement of Cycle Time

fair

0 %

none

Page 10: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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

Story #2

Focus on Delivering

Page 12: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

What helped.... DevQA

Pairing Baby StepsPeople

DevOpsTest Automation

TDD

Kanban Trust

Page 14: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Build one team

DevQA

Build Mgmt

Rel.MgtOPS

Dev

Dev

Dev

Dev

Dev

+

Page 15: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

DevOps + DevQA

Dev QA Ship

Dev OpsQA

Dev OpsQA

Page 16: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Focus process: Kanban

Page 17: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Focus process: Kanban

Avatar

Page 18: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

BFocus on the value stream

Main Metric:Release Cycle Time

Page 19: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Automation

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

Page 21: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Why we should care about fast delivery?

Page 23: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

DeliverImprove

Firefighting

How to find the balance + rhythm?

Page 24: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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

Story #3

Page 25: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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

Why don’t just skip the hardening phase?

Page 28: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

What helped....

A huge step

Baby Steps Test Automation

Kanban

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

Page 30: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

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: Alexander Schwartz Nokia Location & Commercegotocon.com/dl/goto-aar-2012/.../AlexanderSchwartz... · (every major use case is separate) – a lot of shared code – big domain model

Questions?

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