Download - Continous delivery

Transcript
Page 1: Continous delivery

Andrzej Grzesik

Monday, July 2, 12

Page 2: Continous delivery

CONTINOUS DELIVERYjak to ugryźć?

Andrzej Grzesik

Monday, July 2, 12

Page 3: Continous delivery

GREAT BOOKS!

Monday, July 2, 12

Page 4: Continous delivery

3.6% prelegentów jest z

Monday, July 2, 12

Page 5: Continous delivery

ABOUT:ME

Present

Past

Monday, July 2, 12

Page 6: Continous delivery

I HATE COMPUTERSdisclaimer

Monday, July 2, 12

Page 7: Continous delivery

QUESTIONS?ask them right away!

Monday, July 2, 12

Page 8: Continous delivery

So...

Monday, July 2, 12

Page 9: Continous delivery

because

is more fun than

Monday, July 2, 12

Page 10: Continous delivery

what is.. done?

Monday, July 2, 12

Page 11: Continous delivery

#define done

Monday, July 2, 12

Page 12: Continous delivery

What is done?

Monday, July 2, 12

Page 13: Continous delivery

What is done?

Coded

Monday, July 2, 12

Page 14: Continous delivery

What is done?

Coded

Checked-in

Monday, July 2, 12

Page 15: Continous delivery

What is done?

Coded

Checked-in

Reviewed

Monday, July 2, 12

Page 16: Continous delivery

What is done?

Coded

Checked-in

Reviewed

Built

Monday, July 2, 12

Page 17: Continous delivery

What is done?

Coded

Checked-in

Reviewed

Built

Tested

Monday, July 2, 12

Page 18: Continous delivery

What is done?

Coded

Checked-in

Reviewed

Built

Tested

Demoed

Monday, July 2, 12

Page 19: Continous delivery

not really :-)

Monday, July 2, 12

Page 20: Continous delivery

#redefine done

Monday, July 2, 12

Page 21: Continous delivery

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

Monday, July 2, 12

Page 22: Continous delivery

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

Agile Manifesto

Monday, July 2, 12

Page 23: Continous delivery

it’s not ready till it’s deployed

done === released

Monday, July 2, 12

Page 24: Continous delivery

feedback!

Monday, July 2, 12

Page 25: Continous delivery

create hypothesis

deliver minimumviable product

get feedback

(repeat)

build&

deploy&

measure&

data&

learn&

ideas&

Eric Ries, The Lean Startup

Monday, July 2, 12

Page 26: Continous delivery

If we can reduce the time between major iterations

We can increase our odds of successEric Ries, Lean Startup

Monday, July 2, 12

Page 27: Continous delivery

If we can reduce the time between major iterations

We can increase our odds of successEric Ries, Lean Startup

Monday, July 2, 12

Page 28: Continous delivery

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

Page 29: Continous delivery

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

Page 30: Continous delivery

repeatable

Monday, July 2, 12

Page 31: Continous delivery

HOW?!

Monday, July 2, 12

Page 32: Continous delivery

The Deployment Pipelineentreth:

Monday, July 2, 12

Page 33: Continous delivery

The Deployment Pipeline

Monday, July 2, 12

Page 34: Continous delivery

The Deployment Pipeline

compile

Monday, July 2, 12

Page 35: Continous delivery

The Deployment Pipeline

unit testcompile

Monday, July 2, 12

Page 36: Continous delivery

The Deployment Pipeline

unit testcompile

package

Monday, July 2, 12

Page 37: Continous delivery

The Deployment Pipeline

unit testcompile

package

artifact repository

Monday, July 2, 12

Page 38: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

artifact repository

Monday, July 2, 12

Page 39: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

artifact repository

Monday, July 2, 12

Page 40: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing

artifact repository

Monday, July 2, 12

Page 41: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

Monday, July 2, 12

Page 42: Continous delivery

build only once!

Monday, July 2, 12

Page 43: Continous delivery

The Deployment Pipeline

Monday, July 2, 12

Page 44: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

artifact repository

Monday, July 2, 12

Page 45: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing

artifact repository

Monday, July 2, 12

Page 46: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

Monday, July 2, 12

Page 47: Continous delivery

The Deployment Pipeline

unit testcompile

package

Acceptance testing

Capacity testing

Manual testing Release

artifact repository

fear!

Monday, July 2, 12

Page 48: Continous delivery

automate everything!(almost)

Monday, July 2, 12

Page 49: Continous delivery

automate everything!

Monday, July 2, 12

Page 50: Continous delivery

and?

Monday, July 2, 12

Page 51: Continous delivery

well, it’s BIG

Monday, July 2, 12

Page 52: Continous delivery

all code is production ready

Monday, July 2, 12

Page 53: Continous delivery

every version is a Release Candidate

Monday, July 2, 12

Page 54: Continous delivery

Pro tip: --version

Monday, July 2, 12

Page 55: Continous delivery

antipatterns

Monday, July 2, 12

Page 56: Continous delivery

deploying manuallyis evil!

Monday, July 2, 12

Page 57: Continous delivery

error-prone

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

Monday, July 2, 12

Page 58: Continous delivery

always differentrepeatable

Monday, July 2, 12

Page 59: Continous delivery

impossible to test

Monday, July 2, 12

Page 61: Continous delivery

2 AM deploys

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

Monday, July 2, 12

Page 62: Continous delivery

the “deploy” team

Monday, July 2, 12

Page 63: Continous delivery

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

Monday, July 2, 12

Page 64: Continous delivery

Monday, July 2, 12

Page 65: Continous delivery

deploying rarely

late first contact with reality

creates unrealistic assumptions

tested.. in dev

Monday, July 2, 12

Page 66: Continous delivery

do you avoid deploys?

Monday, July 2, 12

Page 67: Continous delivery

deploy each?

year

quarter

week

...

Monday, July 2, 12

Page 68: Continous delivery

if it hurtsdo it more often!

practice, practice, practice

Monday, July 2, 12

Page 69: Continous delivery

incremental, frequent releases reduce risk

Monday, July 2, 12

Page 70: Continous delivery

provide data

Monday, July 2, 12

Page 71: Continous delivery

give rollback points

Monday, July 2, 12

Page 72: Continous delivery

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

Page 73: Continous delivery

Monday, July 2, 12

Page 74: Continous delivery

environments

Monday, July 2, 12

Page 75: Continous delivery

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

to be back up?

Monday, July 2, 12

Page 76: Continous delivery

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

Monday, July 2, 12

Page 77: Continous delivery

Imagine:

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

Monday, July 2, 12

Page 78: Continous delivery

infrastructure and configuration is just as important

Monday, July 2, 12

Page 79: Continous delivery

version it!(puppet, chef, etc)

Monday, July 2, 12

Page 80: Continous delivery

Befriend some admins :-)

Monday, July 2, 12

Page 81: Continous delivery

and version everything

Monday, July 2, 12

Page 82: Continous delivery

manual configuration of environments

not repeatable

privileged team of “magicians”

slight differences create errors

hard to version

doesn’t scale

Monday, July 2, 12

Page 83: Continous delivery

rollback, anyone?

Monday, July 2, 12

Page 84: Continous delivery

trucks

Monday, July 2, 12

Page 85: Continous delivery

Monday, July 2, 12

Page 86: Continous delivery

meanwhile, in the real world

Monday, July 2, 12

Page 87: Continous delivery

deployshow do I?

Monday, July 2, 12

Page 88: Continous delivery

deploys

blue-green

canary

emergency fixes

Monday, July 2, 12

Page 89: Continous delivery

bluegreen

traffic

Monday, July 2, 12

Page 90: Continous delivery

full bluegreen is costlybut great for availability

Monday, July 2, 12

Page 91: Continous delivery

canary

Monday, July 2, 12

Page 92: Continous delivery

Monday, July 2, 12

Page 93: Continous delivery

emergency fixes

Monday, July 2, 12

Page 94: Continous delivery

emergency fixesgo the same way

Monday, July 2, 12

Page 95: Continous delivery

DON’T break rules

Monday, July 2, 12

Page 96: Continous delivery

caveats!

Monday, July 2, 12

Page 97: Continous delivery

caveats

State

Configuration vs JEE

Monday, July 2, 12

Page 98: Continous delivery

caveat: datastores

ideally: each app has it’s own

Monday, July 2, 12

Page 99: Continous delivery

caveat: datastores

really: must be scripted

migrations scripts + from scratch

have tests talking to the db

test each datastore

Monday, July 2, 12

Page 100: Continous delivery

maybe event sourcing?

Monday, July 2, 12

Page 101: Continous delivery

branching

Monday, July 2, 12

Page 102: Continous delivery

Monday, July 2, 12

Page 103: Continous delivery

if your system looks like that

Monday, July 2, 12

Page 104: Continous delivery

cut!

Monday, July 2, 12

Page 105: Continous delivery

Monday, July 2, 12

Page 106: Continous delivery

have integration tests

have a “test” system

Monday, July 2, 12

Page 107: Continous delivery

desktops

LOVE your autoupdate

build-in version checking and inform user

Monday, July 2, 12

Page 108: Continous delivery

desktops

Do

Monday, July 2, 12

Page 109: Continous delivery

desktops

or

Monday, July 2, 12

Page 110: Continous delivery

in practice

modules, modules, modules

pre-tested commits rock.. a bit

dvcs rock a lot!

VMs rock a lot^2!

Monday, July 2, 12

Page 111: Continous delivery

there are tools

Monday, July 2, 12

Page 112: Continous delivery

Go ($$$)

Monday, July 2, 12

Page 113: Continous delivery

Monday, July 2, 12

Page 114: Continous delivery

is awesome

Monday, July 2, 12

Page 115: Continous delivery

+

Monday, July 2, 12

Page 116: Continous delivery

resources

http://continuousdelivery.com

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

Monday, July 2, 12

Page 117: Continous delivery

kthxbye!

Monday, July 2, 12