96
CONTINOUS DELIVERY from the trenches

Continuous delivery @CD Summit Stockholm

Embed Size (px)

Citation preview

CONTINOUSD E L I V E R Yfrom the trenches

MICHAEL MEDIN

LOVE TO BUILD

*LOVE TO BUILD*

TWO GIRLS

NOOoOoOoOoOo!

PINK LEGOs!

CONTINOUSD E L I V E R Yfrom the trenches

THEORY

waterfallRequirements

Specification

Build

Test

Deliver

Done

AGILE

RESCUEto the

Gather Requirements

Write Specification

Build softwareTest software

Deliver Software

Acceptance Test

Agile

Frontend

Business logic

Backend

3-tier

Gather Requirements

Write Specification

Build softwareTest software

Deliver Software

Acceptance Test

…but how?

Frontend

Business logic

Backend

Frontend

Business logic

Backend

waterfalls

INTEGRATIONCONTINUOUS

RESCUEto the

Code

IntegrateBuild

Test

INTEGRATIONCONTINUOUS

complexity++

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

complexity++DEV

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

DEV2

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

TEST

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

AT

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

ST

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

PRE PROD

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

PROD

WEB/APP

DB

WEB/APP WEB/APP

LB

APPESB

Code

IntegrateBuild

Test

…but how?

Development

Installation

Testing

waterfalls

DELIVERYCONTINUOUS

RESCUEto the

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

DELIVERYCONTINUOUS

.NET Oracle

JavaSAP

distributed

…but how?

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

ReleaseCode

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

DeployAcceptance/Integrationtest

Release

.NET Oracle EBS

JavaSAP

waterfalls

Agile Enterprise

RESCUEto the

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

ReleaseCode

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

no such thing…

…we use product X…

people say:

…it’s impossible

LIES!

people say:

…this is very hard…

…it’s impossible

LIES!

…we don’t have time…

people say:

…it’s impossible

LIES!

…it is to hard to spell…

people say:

…it’s impossible

TRUE

CONTINUOUSCONTINUS

http://blog.gardeviance.org/2012/07/adoption-cycles.html

DELIVERYCONTINUOUS

AUTOMATION

CodeTest

Release

Install Configuration

DeployAcceptance Test

Migration Everything

Regression Test Build

Deploy button

500 services

500 services

Different route…

ARTIFACTS

CONFIG

FrameworksGenerate Code

Code Generation

search & replace

ARTIFACTS

CONFIG

FrameworksGenerate Code

VERSION CONTROL

Scriptable

Git

ARTIFACTS

CONFIG

Build CodeFrameworksGenerate Code

VERSION CONTROL

Maven

Convention over Code

ARTIFACTS

CONFIG

Test CodeBuild CodeFrameworksGenerate Code

VERSION CONTROL

Diff / Compare

SoapUI

ARTIFACTS

CONFIG

Release Code

Test CodeBuild CodeFrameworksGenerate Code

VERSION CONTROL

Python script

Maven

(calls maven & git)

ARTIFACTS

CONFIG

Release Code

Test CodeBuild CodeFrameworksGenerate Code

Edit Code

VERSION CONTROL

Open-ended

No magic

ARTIFACTS

CONFIG

Release Code

Test CodeBuild CodeFrameworksGenerate Code

Edit Code

VERSION CONTROL

Review Code

Git diff

Pull requestsTemplates

ARTIFACTS

CONFIG

Release Code

Configuration

Test CodeBuild CodeFrameworksGenerate Code

BOM

Edit Code

VERSION CONTROL

Review Code

Text files

First class citizens

ARTIFACTS

CONFIG

Release Code

Configuration

Test CodeBuild CodeFrameworksGenerate Code

BOM

Tickets

Edit Code

VERSION CONTROL

Review Code

Tickets

ARTIFACTS

CONFIG

Release Code

Configuration

Test CodeBuild CodeFrameworksGenerate Code

BOM

Tickets

Edit Code

VERSION CONTROL

Review Code

“Automated”

ARTIFACTS

CONFIG

Release Code

Configuration

Test CodeBuild CodeFrameworksGenerate Code

BOM

Tickets

Edit Code

VERSION CONTROL

Review Code

Self Service

ARTIFACTS

CONFIG

Verify Code

Code Review #2

Many parties

ARTIFACTS

CONFIG

Verify Code Test

Manual!

By the Business

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Gen Wiki

“javadoc”

ARTIFACTS

CONFIG

Verify Code TestDocument

CodeMonitoring

Portal

Business Metrics

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Manage Config

Monitoring

The same config!

The world changes

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Manage Config

Approve Tickets

Monitoring

CM

Q&A

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Manage Config

Deploy

Monitoring

Maven

Approve TicketsPython script(calls maven)

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Manage Config

Deploy

Approve Tickets

Monitoring

“Automated”

ARTIFACTS

CONFIG

Verify Code TestDocument

Code

Manage Config

Deploy

Approve Tickets

Monitoring

Self Service

ARTIFACTS

CONFIG

Automation

Edit Code

VERSION CONTROL

Review Code

Automation

Self Service UI

Automation

Ticket workflow

“manual” pipeline

Deploy:

Time per week:

Consultants:

1 per week

3-4

20h

Every week!

Accumulated cost

0

20

40

60

80

100

120

140

0 1 2 3 4 5 6

Manual Automated

Accumulated cost

0

20

40

60

80

100

120

140

1 2 3 4 5 6 7

Manual Automated

Re invest in CD

AUTOMATION

CodeTest

Release

Install Configuration

DeployAcceptance Test

Migration Everything

Regression Test Build

WASTEReducing manual

and human error

It’s not a tool

It’s not a pipeline

It’s not automation

It’s is a process

…a sometimesautomated process

a process with no manual waste and no

human errors

…it is to hard to spell…

people say:

…it’s impossible

morality

CD is areligion

find what hurts

#1

fix it

#2

enlightenment

#3

goto #1

#4

1:find what hurts

2:fix it

3:reach enlightenment

4:goto #1

The recipe

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

Code

Integrate

Build

Unit-test

DeployAcceptance/Integrationtest

Release

.NET Oracle EBS

JavaSAP

waterfalls

Our job is to automatebusiness processes.

Why do we do this

manually?

Photo by Olga Berrios

Michael Medin:[email protected]

https://www.medin.name

@mickem

https://www.linkedin.com/in/mickem

Slides:http://www.slideshare.net/MichaelMedin