Download - Continuous deployment

Transcript
Page 1: Continuous deployment

ContinuousDeployment

Òscar Vilaplana@[email protected] DjangoCon EU 2013

Page 2: Continuous deployment

"""We're hiring!"""from paylogic import (code, highavailability, challenge)from netherlands import (fun, nature, bikes, beer)

def hire(you): email('[email protected]', you.cv) return challenge.accept()

Page 3: Continuous deployment
Page 4: Continuous deployment
Page 5: Continuous deployment

"""We're hiring!"""from paylogic import (code, highavailability, challenge)from netherlands import (fun, nature, bikes, beer)

def hire(you): email('[email protected]', you.cv) return challenge.accept()

Page 6: Continuous deployment

intro

Page 7: Continuous deployment

deploy

Page 8: Continuous deployment

easy

Page 9: Continuous deployment

good at it

Page 10: Continuous deployment

everyone

Page 11: Continuous deployment

Product Owner

Page 12: Continuous deployment

Stable

Page 13: Continuous deployment

latest versions

Page 14: Continuous deployment

big changes

Page 15: Continuous deployment

gradually

Page 16: Continuous deployment

acceptance

Page 17: Continuous deployment

stable

Page 18: Continuous deployment

works

Page 19: Continuous deployment

Done

Page 20: Continuous deployment

breaks

Page 21: Continuous deployment

don't panic

Page 22: Continuous deployment

forces

Page 23: Continuous deployment

Right Things

Page 24: Continuous deployment

repeatable

Page 25: Continuous deployment

identical

Page 26: Continuous deployment

deployment

Page 27: Continuous deployment

environments

Page 28: Continuous deployment

backwardscompatible

Page 29: Continuous deployment

rollback

Page 30: Continuous deployment

components

Page 31: Continuous deployment

tests

Page 32: Continuous deployment

yes it does!

Page 33: Continuous deployment

start working

Page 34: Continuous deployment

energy

Page 35: Continuous deployment

download

Page 36: Continuous deployment

setup.py

Page 37: Continuous deployment

broken

Page 38: Continuous deployment

dependency

Page 39: Continuous deployment

pip install

Page 40: Continuous deployment

setup.py

Page 41: Continuous deployment

nope

Page 42: Continuous deployment

docs&

hack

Page 43: Continuous deployment

for(;;)

Page 44: Continuous deployment

pip uninstall giveafuck

Page 45: Continuous deployment
Page 46: Continuous deployment
Page 47: Continuous deployment
Page 48: Continuous deployment

Life life = new Life()

Page 49: Continuous deployment
Page 50: Continuous deployment
Page 51: Continuous deployment
Page 52: Continuous deployment
Page 53: Continuous deployment
Page 54: Continuous deployment

taming a lion1800s

Page 55: Continuous deployment

beat into submissionfear

guns & whipsconfusion

Page 56: Continuous deployment

taming a lionpresent

Page 57: Continuous deployment

understandconditioning

behaviour → signalreward

trust

Page 58: Continuous deployment

taming a lion1800s

Page 59: Continuous deployment

beat into submissionfear

guns & whipsconfusion

Page 60: Continuous deployment

deploy by hand, hackfear

guns & whipsconfusion

Page 61: Continuous deployment

deploy by hand, hackbut it works!guns & whips

confusion

Page 62: Continuous deployment

deploy by hand, hackbut it works!

hack till it worksconfusion

Page 63: Continuous deployment

deploy by hand, hackbut it works!

hack till it worksspecial decisions

Page 64: Continuous deployment
Page 65: Continuous deployment

taming a lionpresent

Page 66: Continuous deployment

understandconditioning

behaviour → signalreward

trust

Page 67: Continuous deployment

deploy: hardconditioning

behaviour → signalreward

trust

Page 68: Continuous deployment

deploy: hardCI

behaviour → signalreward

trust

Page 69: Continuous deployment

deploy: hardCI

push → test → greenreward

trust

Page 70: Continuous deployment

deploy: hardCI

push → test → greenhappytrust

Page 71: Continuous deployment

deploy: hardCI

push → test → greenhappy

it works in Live

Page 72: Continuous deployment
Page 73: Continuous deployment

what you needwhat you need

Page 74: Continuous deployment

team

Page 75: Continuous deployment

working software

Page 76: Continuous deployment

repeatable build

Page 77: Continuous deployment

deployment

Page 78: Continuous deployment

rollback

Page 79: Continuous deployment

release

Page 80: Continuous deployment

team

Page 81: Continuous deployment

committedto

quality

Page 82: Continuous deployment

processcan't

compensate

Page 83: Continuous deployment

pip installgiveafuck

Page 84: Continuous deployment

everyonedeploys

Page 85: Continuous deployment

identicalenvironment

Page 86: Continuous deployment

everyoneis

responsible

Page 87: Continuous deployment

learn

Page 88: Continuous deployment

workingsoftware

Page 89: Continuous deployment

tests

Page 90: Continuous deployment

unit tests

functional tests

acceptance tests

Page 91: Continuous deployment

acceptance:

user'sviewpoint

Page 92: Continuous deployment

continuousintegration

Page 93: Continuous deployment

quickreliable

Page 94: Continuous deployment

slow test: fail

Page 95: Continuous deployment

no pylint: fail

Page 96: Continuous deployment

keep it green

Page 97: Continuous deployment

check in often

always ready torollback

Page 98: Continuous deployment

responsible:dev + qa

Page 99: Continuous deployment

quality

Page 100: Continuous deployment

broken:triage

Page 101: Continuous deployment

right now

vs

asap

Page 102: Continuous deployment

repeatablebuild

Page 103: Continuous deployment

automated

Page 104: Continuous deployment

used by everyoneeverywhere

Page 105: Continuous deployment

no manual changes

Page 106: Continuous deployment

deploymentscript

Page 107: Continuous deployment

used by everyoneeverywhere

Page 108: Continuous deployment

deploy.sh<environment>

<version>

Page 109: Continuous deployment

not just code

configurationinfrastructure

Page 110: Continuous deployment

always followpipeline

Page 111: Continuous deployment

even on emergencies

Page 112: Continuous deployment

buggy changesunknown stateirreproducible

what went wrong?

Page 113: Continuous deployment

what went wrong?

Page 114: Continuous deployment

rollback

Page 115: Continuous deployment

blue-greengreen is live

release to bluetest, accept

blue is new green

Page 116: Continuous deployment

canary

show new versionto a few

Page 117: Continuous deployment

database:keep backwards-

compatible

Page 118: Continuous deployment

release

Page 119: Continuous deployment

last stepautomatic

Page 120: Continuous deployment

small changesfrequent

experience

less risk

Page 121: Continuous deployment

maybenot for you

Page 122: Continuous deployment

tips

Page 123: Continuous deployment

split in components

Page 124: Continuous deployment

rehearse releases

get very goodat them!

Page 125: Continuous deployment

infrastructure

manage and test

Page 126: Continuous deployment

all environments equal

use vagrant

Page 127: Continuous deployment

automate everything

(not possible?document)

Page 128: Continuous deployment

Questions?Answers?

@[email protected] Thank you!