Continous delivery

Post on 11-May-2015

1.015 views 0 download

Tags:

Transcript of Continous delivery

Andrzej Grzesik

Monday, July 2, 12

CONTINOUS DELIVERYjak to ugryźć?

Andrzej Grzesik

Monday, July 2, 12

GREAT BOOKS!

Monday, July 2, 12

3.6% prelegentów jest z

Monday, July 2, 12

ABOUT:ME

Present

Past

Monday, July 2, 12

I HATE COMPUTERSdisclaimer

Monday, July 2, 12

QUESTIONS?ask them right away!

Monday, July 2, 12

So...

Monday, July 2, 12

because

is more fun than

Monday, July 2, 12

what is.. done?

Monday, July 2, 12

#define done

Monday, July 2, 12

What is done?

Monday, July 2, 12

What is done?

Coded

Monday, July 2, 12

What is done?

Coded

Checked-in

Monday, July 2, 12

What is done?

Coded

Checked-in

Reviewed

Monday, July 2, 12

What is done?

Coded

Checked-in

Reviewed

Built

Monday, July 2, 12

What is done?

Coded

Checked-in

Reviewed

Built

Tested

Monday, July 2, 12

What is done?

Coded

Checked-in

Reviewed

Built

Tested

Demoed

Monday, July 2, 12

not really :-)

Monday, July 2, 12

#redefine done

Monday, July 2, 12

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Monday, July 2, 12

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Agile Manifesto

Monday, July 2, 12

it’s not ready till it’s deployed

done === released

Monday, July 2, 12

feedback!

Monday, July 2, 12

create hypothesis

deliver minimumviable product

get feedback

(repeat)

build&

deploy&

measure&

data&

learn&

ideas&

Eric Ries, The Lean Startup

Monday, July 2, 12

If we can reduce the time between major iterations

We can increase our odds of successEric Ries, Lean Startup

Monday, July 2, 12

If we can reduce the time between major iterations

We can increase our odds of successEric Ries, Lean Startup

Monday, July 2, 12

How long would it take your organization to deploy a change that involved just one single line of code?

Do you do this on a repeatable, reliable basis?

Mary and Tom Poppendieck,Implementing Lean Software Development

Monday, July 2, 12

How long would it take your organization to deploy a change that involved just one single line of code?

Do you do this on a repeatable, reliable basis?

Mary and Tom Poppendieck,Implementing Lean Software Development

Monday, July 2, 12

repeatable

Monday, July 2, 12

HOW?!

Monday, July 2, 12

The Deployment Pipelineentreth:

Monday, July 2, 12

The Deployment Pipeline

Monday, July 2, 12

The Deployment Pipeline

compile

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

Monday, July 2, 12

build only once!

Monday, July 2, 12

The Deployment Pipeline

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

Monday, July 2, 12

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

fear!

Monday, July 2, 12

automate everything!(almost)

Monday, July 2, 12

automate everything!

Monday, July 2, 12

and?

Monday, July 2, 12

well, it’s BIG

Monday, July 2, 12

all code is production ready

Monday, July 2, 12

every version is a Release Candidate

Monday, July 2, 12

Pro tip: --version

Monday, July 2, 12

antipatterns

Monday, July 2, 12

deploying manuallyis evil!

Monday, July 2, 12

error-prone

http://www.flickr.com/photos/aaronjacobs/64368770/

Monday, July 2, 12

always differentrepeatable

Monday, July 2, 12

impossible to test

Monday, July 2, 12

2 AM deploys

http://www.flickr.com/photos/dhdesign/1096464615/sizes/z/in/photostream/

Monday, July 2, 12

the “deploy” team

Monday, July 2, 12

deploying rarely/latesymptomps: “alpha”, “beta”, “gold”

Monday, July 2, 12

Monday, July 2, 12

deploying rarely

late first contact with reality

creates unrealistic assumptions

tested.. in dev

Monday, July 2, 12

do you avoid deploys?

Monday, July 2, 12

deploy each?

year

quarter

week

...

Monday, July 2, 12

if it hurtsdo it more often!

practice, practice, practice

Monday, July 2, 12

incremental, frequent releases reduce risk

Monday, July 2, 12

provide data

Monday, July 2, 12

give rollback points

Monday, July 2, 12

some stats

Facebook - deploy every 10 minutes

Netflix

Etsy - 50-60 deploys/day

last project - 1374 commits, 1057 deployments, <8 months

Monday, July 2, 12

Monday, July 2, 12

environments

Monday, July 2, 12

If I erased ALL your production machines, how long would you need

to be back up?

Monday, July 2, 12

well, code is in Git mercurial, subversion, ClearCase, whathaveyou

Monday, July 2, 12

Imagine:

http://www.flickr.com/photos/roadhunter/68017745/

Monday, July 2, 12

infrastructure and configuration is just as important

Monday, July 2, 12

version it!(puppet, chef, etc)

Monday, July 2, 12

Befriend some admins :-)

Monday, July 2, 12

and version everything

Monday, July 2, 12

manual configuration of environments

not repeatable

privileged team of “magicians”

slight differences create errors

hard to version

doesn’t scale

Monday, July 2, 12

rollback, anyone?

Monday, July 2, 12

trucks

Monday, July 2, 12

Monday, July 2, 12

meanwhile, in the real world

Monday, July 2, 12

deployshow do I?

Monday, July 2, 12

deploys

blue-green

canary

emergency fixes

Monday, July 2, 12

bluegreen

traffic

Monday, July 2, 12

full bluegreen is costlybut great for availability

Monday, July 2, 12

canary

Monday, July 2, 12

Monday, July 2, 12

emergency fixes

Monday, July 2, 12

emergency fixesgo the same way

Monday, July 2, 12

DON’T break rules

Monday, July 2, 12

caveats!

Monday, July 2, 12

caveats

State

Configuration vs JEE

Monday, July 2, 12

caveat: datastores

ideally: each app has it’s own

Monday, July 2, 12

caveat: datastores

really: must be scripted

migrations scripts + from scratch

have tests talking to the db

test each datastore

Monday, July 2, 12

maybe event sourcing?

Monday, July 2, 12

branching

Monday, July 2, 12

Monday, July 2, 12

if your system looks like that

Monday, July 2, 12

cut!

Monday, July 2, 12

Monday, July 2, 12

have integration tests

have a “test” system

Monday, July 2, 12

desktops

LOVE your autoupdate

build-in version checking and inform user

Monday, July 2, 12

desktops

Do

Monday, July 2, 12

desktops

or

Monday, July 2, 12

in practice

modules, modules, modules

pre-tested commits rock.. a bit

dvcs rock a lot!

VMs rock a lot^2!

Monday, July 2, 12

there are tools

Monday, July 2, 12

Go ($$$)

Monday, July 2, 12

Monday, July 2, 12

is awesome

Monday, July 2, 12

+

Monday, July 2, 12

resources

http://continuousdelivery.com

http://lmgtfy.com/?q=continuous+delivery

Monday, July 2, 12

kthxbye!

Monday, July 2, 12