+ All Categories
Home > Software > Continuous Delivery in the Enterprise

Continuous Delivery in the Enterprise

Date post: 12-Jan-2017
Category:
Upload: michael-medin
View: 218 times
Download: 2 times
Share this document with a friend
74
CONTINOUS DELIVERY
Transcript

CONTINOUSD E L I V E R Y

MICHAEL MEDIN

LOVE TO BUILD

*LOVE* TO BUILD

TWO GIRLS

NOOoOoOoOoOo!

PINK LEGOs!

LOVE MY GIRLS!

R2M

Simply the best

Open Source CommercialJava .netIntegration Method

R2M

Automation, CI/CD, DevOps…even with commercial vendors

R2M

We love knowledge!

Competence Fall

Coding After Work

Conferences

R2M

We are hiring!

R2M

We are hiring!

R2M

We are hiring!

R2M

We are hiring!

http://tinyurl.com/like-r2m

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

waterfalls

Gather Requirements

Write Specification

Build softwareTest software

Deliver Software

Acceptance Test

projects

not code

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

Code

IntegrateBuild

Test

code

not systems

DELIVERYCONTINUOUS

RESCUEto the

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

DELIVERYCONTINUOUS

.NET Oracle

JavaSAP

distributed

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

…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

ReleaseCode

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

.NET Oracle

JavaSAP

waterfalls

Code

Integrate

Build

Unit-test

Deploy

Acceptance/Integration

test

Release

systems

not enterprise

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…

DELIVERYCONTINUOUSbut...

agileENTERPRISE

is the road to

DELIVERYCONTINUOUSbut...

HOW?

DIFFICULTDELIVERYCONTINUOUS

…to spell…UOU…

DIFFICULTDELIVERYCONTINUOUS

AUTOMATE

CodeTest

Release

Install Configuration

DeployAcceptance Test

Migration Everything

Regression Test Build

VERY

people say:

THIS IS

HARD

LIES!

…but we use product X…

people say:

…it’s impossible

LIES!

Shamelessly stolen from Adrian Cockcroft

…back to:AUTOMATION

PIPELINE

DEPLOYWORKFLOW

is keyDevOps

AUTOMATE

Code

Test

Release

InstallConfiguration

DeployAcc. Test Migration

EverythingBUILD ITwe need to

DevOpsNot about: working together

It’s about working together

remember

DELIVERY

CONTINUOUS

NOT MONEYFREE

Deploy:

Time:

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

Project cost

0

50

100

150

200

250

300

350

400

Project A Project B Project C Project D Project E

Hours

Project cost

0

50

100

150

200

250

300

350

400

Project A Project B Project C Project D Project E

Hours

Investing in CDStill saved money

Practice Build management and CI Environments and deployment

Release management Testing Data management Configuration Management

Level 3 – Optimizing: Focus on process

improvement

Teams regularly meet to discuss integration problems and resolve

them with automation, faster feedback, and better visibility

All environments managed effectively. Provisioning

fully automated. Virtualization used if

applicable.

Operations and delivery teams regularly collaborate to

manage risks and reduce cycle time.

Production rollbacks rare. Defects found and fixed

immediately.

Release to release feedback loop of database performance and

deployment process

Regular validation that CM policy supports effective

collaboration, rapid development, and auditable

change management processes.

Level 2 –Quantitatively

managed: Process measured and

controlled

Build metrics gathered, made visible, and acted on. Build s are

not left broken.

Orchestrated deployments managed. Release and

rollback processes tested.

Environment and application health monitored and

proactively managed. Cycle time monitored.

Quality metrics and trends tracked. Non

functional requirements defined and measured.

Database upgrades and rollbacks tested with every

deployment. Database performance monitored and

optimized.

Developers check in to mainlined at least once a day.

Branching only used for releases.

Level 1 – ConsistentAutomated processes applied across whole application lifecycle

Automated build and test cycle very time a change is committed. Dependencies managed, Re-use

of scripts and tools.

Fully automated, self-service push-button process

for deploying software. Same process to deploy to

every environment.

Change management and approvals processes defined

and enforced. Regulatory and compliance conditions met.

Automated unit and acceptance tests, the

latter written with testers. Testing part of development process.

Database changes performed automatically as part of

deployment process.

Libraries and dependenciesmanaged. Version control

usage policies determined by change management process.

Level 0 – Repeatable: Process documented and partly automated

Regular automated build and testing. Any build can be re-

created from source control using automated process.

Automated deployment to some environments.

Creation of new environments is cheap. All

configuration externalized / versioned

Painful and infrequent, but reliable, releases. Limited

traceability from requirements to release.

Automated tests written as part of story development.

Changes to databases done with automated scripts

versioned with application.

Version control in use for everything required to

recreate software: source code, configuration, build and

deploy scripts, data migrations.

Level -1 – RegressiveProcesses

unrepeatable, poorly controlled, and

reactive

Manual process for building software. No management of

artifacts and reports.

Manual process for deploying software.

Environment-specificbinaries. Environments provisioned manually

Infrequent and unreliable releases.

Manual testing after development.

Data migration unversionedand performed manually.

Version control either not used, or check-in happens

infrequently.

Capability Maturity ModelLevel 1ConsistentAutomated

processes applied across whole

application lifecycle

Automated build and test cycle very time a change is committed.

Dependencies managed, Re-use of scripts and tools.

Fully automated, self-service push-button process for

deploying software. Same process to deploy to every

environment.

Level 0Repeatable:

Process documented and partly automated

Regular automated build and testing. Any build can be re-created from source control using automated

process.

Automated deployment to some environments.

Creation of new environments is cheap. All

configuration externalized / versioned

Level -1RegressiveProcesses

unrepeatable, poorly controlled, and

reactive

Manual process for building software. No management of

artifacts and reports.

Manual process for deploying software.

Environment-specificbinaries. Environments provisioned manually

Level 1ConsistentAutomated

processes applied across whole

application lifecycle

Automated build and test cycle very time a change is committed.

Dependencies managed, Re-use of scripts and tools.

Fully automated, self-service push-button process for

deploying software. Same process to deploy to every

environment.

Level 0Repeatable:

Process documented and partly automated

Regular automated build and testing. Any build can be re-created from source control using automated

process.

Automated deployment to some environments.

Creation of new environments is cheap. All

configuration externalized / versioned

Level -1RegressiveProcesses

unrepeatable, poorly controlled, and

reactive

Manual process for building software. No management of

artifacts and reports.

Manual process for deploying software.

Environment-specificbinaries. Environments provisioned manually

DELIVERYCONTINUOUS

ONE SLIDER

Everything is Code

Our job is to automatebusiness processes.

Why do we do this

manually?

Photo by Olga Berrios


Recommended