continuous delivery antipatterns

148
@ags313 #DV13-cda Continuous Delivery Antipatterns Andrzej Grzesik ebay

Upload: andrzej-grzesik

Post on 10-May-2015

1.284 views

Category:

Technology


3 download

DESCRIPTION

Continuous Delivery Antipatterns slides from this year's Devoxx, enjoy!

TRANSCRIPT

Page 1: Continuous Delivery Antipatterns

@ags313#DV13-cda

Continuous Delivery Antipatterns

Andrzej Grzesik ebay

Page 2: Continuous Delivery Antipatterns

@ags313#DV13-cda

cd antipatterns; ls -alAndrzej Grzesik

ebay

Page 3: Continuous Delivery Antipatterns

Demo

@ags313#DV13-cda

@ags313

[email protected]

andrzejgrzesik.info

Andrzej Grzesik

Page 4: Continuous Delivery Antipatterns

@ags313#DV13-cda

MY OPINIONS ARE MY OWNdisclaimer

Page 5: Continuous Delivery Antipatterns

@ags313#DV13-cda

ABOUT:MEI’m proud of:

Page 6: Continuous Delivery Antipatterns

@ags313#DV13-cda

I HATE COMPUTERSdisclaimer ;-)

Page 7: Continuous Delivery Antipatterns

@ags313#DV13-cda

QUESTIONS?

Page 8: Continuous Delivery Antipatterns

@ags313#DV13-cda

NO! 42

IT DEPENDSanswers!

Page 9: Continuous Delivery Antipatterns

@ags313#DV13-cda

QUESTIONS?ask them right away!

Page 10: Continuous Delivery Antipatterns

@ags313#DV13-cda

#DEVOXXkeep on tweeting!

Page 11: Continuous Delivery Antipatterns

@ags313#DV13-cda

TL; DR: RELEASE MORE OFTEN!

and don’t listen to ‘no-can-do’s

Page 12: Continuous Delivery Antipatterns

@ags313#DV13-cda

SOFTWAREis a people problem

Page 13: Continuous Delivery Antipatterns

@ags313#DV13-cda

IN THE BEGINNING

Page 14: Continuous Delivery Antipatterns

@ags313#DV13-cda

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

Page 15: Continuous Delivery Antipatterns

@ags313#DV13-cda

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

Page 16: Continuous Delivery Antipatterns

@ags313#DV13-cda

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

agile manifesto, 2001

Page 17: Continuous Delivery Antipatterns

@ags313#DV13-cda

DELIVERY IS ORGANIZATION-SPECIFIC

Page 18: Continuous Delivery Antipatterns

@ags313#DV13-cda

CHANGE SCENARIO

Page 19: Continuous Delivery Antipatterns

@ags313#DV13-cda

1. PRIORITIZE PROBLEMS

Page 20: Continuous Delivery Antipatterns

@ags313#DV13-cda

2. FIX FIRST

Page 21: Continuous Delivery Antipatterns

@ags313#DV13-cda

REPEAT

Page 22: Continuous Delivery Antipatterns

@ags313#DV13-cda

A LONG TIME AGO IN A GALAXY FAR, FAR AWAY…

Page 23: Continuous Delivery Antipatterns

@ags313#DV13-cda

SYSTEM (TM)

Page 24: Continuous Delivery Antipatterns

@ags313#DV13-cda

DEVELOPERS

Page 25: Continuous Delivery Antipatterns

@ags313#DV13-cda

DEVELOPERSeverywhere-sourced

Page 26: Continuous Delivery Antipatterns

@ags313#DV13-cda

OH, WAIT

Page 27: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 28: Continuous Delivery Antipatterns

@ags313#DV13-cda

PUSH THEIR CODE

Page 29: Continuous Delivery Antipatterns

@ags313#DV13-cda

SITE BREAKS

Page 30: Continuous Delivery Antipatterns

@ags313#DV13-cda

SITE BREAKSfor two days

Page 31: Continuous Delivery Antipatterns

@ags313#DV13-cda

DURING HOT SEASON

Page 32: Continuous Delivery Antipatterns

@ags313#DV13-cda

ALL ROLL-BACK!

Page 33: Continuous Delivery Antipatterns

@ags313#DV13-cda

TO WHERE?

Page 34: Continuous Delivery Antipatterns

@ags313#DV13-cda

FROM WHERE?

Page 35: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: NO IDEA WHAT IS WHERE

Page 36: Continuous Delivery Antipatterns

@ags313#DV13-cda

GIT PUSH --FORCE PROD#randomhashisbetterthannone

Page 37: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: --VERSION

Page 38: Continuous Delivery Antipatterns

@ags313#DV13-cda

BETTER: DO SEMANTIC VERSIONING

http://semver.org/

Page 39: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: KNOW WHAT IS WHERE

Page 40: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: KNOW WHAT IS WHERE(have a dashboard)

Page 41: Continuous Delivery Antipatterns

@ags313#DV13-cda

GLUhttps://github.com/pongasoft/glu

Page 42: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: MANY TEAMS/UNSTABLE CODE

Page 43: Continuous Delivery Antipatterns

@ags313#DV13-cda

MULTIPLE REPO IS OKone for dev, one for releases

Page 44: Continuous Delivery Antipatterns

@ags313#DV13-cda

GIT FLOW IS OKhttp://nvie.com/posts/a-successful-git-branching-model/

Page 45: Continuous Delivery Antipatterns

@ags313#DV13-cda

PERSONAL FAVOURITE: STABLE MASTER

Page 46: Continuous Delivery Antipatterns

@ags313#DV13-cda

BUSINESS CONCLUSION:

Page 47: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 48: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASES == RISKlet’s avoid them!

Page 49: Continuous Delivery Antipatterns

@ags313#DV13-cda

WHAT DO YOU GET?

Page 50: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: FEAR OF RELEASING

Page 51: Continuous Delivery Antipatterns

@ags313#DV13-cda

STAGNATION CREEPS IN

Page 52: Continuous Delivery Antipatterns

@ags313#DV13-cda

QUIET PERIODS

Page 53: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASE ‘TRAINS’

Page 54: Continuous Delivery Antipatterns

@ags313#DV13-cda

RC, BETA, GOLD

Page 55: Continuous Delivery Antipatterns

@ags313#DV13-cda

SOLUTION: INVOLVE BUSINESSa.k.a. ‘manage stakeholders’

Page 56: Continuous Delivery Antipatterns

@ags313#DV13-cda

SMALL CHANGES SHOULD HAPPEN QUICKLY

great selling point

Page 57: Continuous Delivery Antipatterns

@ags313#DV13-cda

BUILD ENVS

Page 58: Continuous Delivery Antipatterns

@ags313#DV13-cda

OK, LET’S HAVE A PIPELINE

Page 59: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: SLOW

Page 60: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 61: Continuous Delivery Antipatterns

@ags313#DV13-cda

SOLUTION: PARALELLIZE

Page 62: Continuous Delivery Antipatterns

@ags313#DV13-cda

WHICH PART?

Page 63: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 64: Continuous Delivery Antipatterns

@ags313#DV13-cda

FREE WIN: DECOUPLED DESIGN

Page 65: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: RECOMPILING

Page 66: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 67: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 68: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 69: Continuous Delivery Antipatterns

@ags313#DV13-cda

HOW DO I REPLICATE PRODUCTION?

Page 70: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: USE A BINARY REPOSITORY

Page 71: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: SEPARATE TEAMS

Page 72: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASE TEAMdealing with ‘danger‘

Page 73: Continuous Delivery Antipatterns

@ags313#DV13-cda

SYMPTOM: DEALING WITH DANGER

Page 74: Continuous Delivery Antipatterns

@ags313#DV13-cda

LIKES TO BE MANUAL‘job security‘

Page 75: Continuous Delivery Antipatterns

@ags313#DV13-cda

US VS THEM‘leave me alone, I’m important’

Page 76: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASE PROCESSES

Page 77: Continuous Delivery Antipatterns

@ags313#DV13-cda

CURIOUS RELEASE PROCESSES

Page 78: Continuous Delivery Antipatterns

@ags313#DV13-cda

WORK EXPANDS TO FILL THE TIME AVAILABLE FOR ITS COMPLETION

Parkinson’s Law

Page 79: Continuous Delivery Antipatterns

@ags313#DV13-cda

TOO CURIOUS PROCESSES LEAD TO

Page 80: Continuous Delivery Antipatterns

@ags313#DV13-cda

UNOFFICIAL RELEASES

Page 81: Continuous Delivery Antipatterns

@ags313#DV13-cda

UNOFFICIAL RELEASES(don’t do them)

Page 82: Continuous Delivery Antipatterns

@ags313#DV13-cda

BUNKERS

Page 83: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 84: Continuous Delivery Antipatterns

@ags313#DV13-cda

SOLUTION: ENCOURAGE INTERACTIONS

Page 85: Continuous Delivery Antipatterns

@ags313#DV13-cda

BREAK && INTEGRATE

Page 86: Continuous Delivery Antipatterns

@ags313#DV13-cda

BREAK && INTEGRATErepeatedly

Page 87: Continuous Delivery Antipatterns

@ags313#DV13-cda

GAMES ARE AWESOME!repeat the event

Page 88: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: MANUAL INFRASTRUCTURE

Page 89: Continuous Delivery Antipatterns

@ags313#DV13-cda

INFRASTRUCTURE

Page 90: Continuous Delivery Antipatterns

@ags313#DV13-cda

WE USE CHEF, WE’RE SAFE^^

Page 91: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 92: Continuous Delivery Antipatterns

@ags313#DV13-cda

DID YOU TEST?

Page 93: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 94: Continuous Delivery Antipatterns

@ags313#DV13-cda

FOOD CRITIClint for chef

Page 95: Continuous Delivery Antipatterns

@ags313#DV13-cda

lint for chef

Page 96: Continuous Delivery Antipatterns

@ags313#DV13-cda

PUPPET VS CHEF VS …

Page 97: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: ENV BUILDS

Page 98: Continuous Delivery Antipatterns

@ags313#DV13-cda

SLOW?

Page 99: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 100: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: INTERNET

Page 101: Continuous Delivery Antipatterns

@ags313#DV13-cda

QUIZ

Page 102: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 103: Continuous Delivery Antipatterns

@ags313#DV13-cda

NEED INTERNET TO BUILD?

Page 104: Continuous Delivery Antipatterns

@ags313#DV13-cda

OF COURSE!

Page 105: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 106: Continuous Delivery Antipatterns

@ags313#DV13-cda

RUBYGEMS.ORG CPAN.ORG

MAVEN.ORG

Page 107: Continuous Delivery Antipatterns

@ags313#DV13-cda

RUBYGEMS.ORG CPAN.ORG

MAVEN.ORGgo down!

Page 108: Continuous Delivery Antipatterns

@ags313#DV13-cda

MAKE YOUR BUILD RUN WITHOUT INTERNET

or at least try, you’ll learn fun things :-)

Page 109: Continuous Delivery Antipatterns

@ags313#DV13-cda

APPLICATION AND ENVIRONMENT

Page 110: Continuous Delivery Antipatterns

@ags313#DV13-cda

SAVE TIME AND NERVES

Page 111: Continuous Delivery Antipatterns

@ags313#DV13-cda

BINARY REPO/PROXY/…

Page 112: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: NO RUNTIME UPGRADE

Page 113: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 114: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 115: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 116: Continuous Delivery Antipatterns

@ags313#DV13-cda

DESKTOPS

Page 117: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 118: Continuous Delivery Antipatterns

@ags313#DV13-cda

FIREFOX IS UPDATINGand you can not use it

Page 119: Continuous Delivery Antipatterns

@ags313#DV13-cda

MOBILE APPS

Page 120: Continuous Delivery Antipatterns

@ags313#DV13-cda

WEBVIEW IS NICE

Page 121: Continuous Delivery Antipatterns

@ags313#DV13-cda

FREQUENT RELEASESmake your user curious

Page 122: Continuous Delivery Antipatterns

@ags313#DV13-cda

MAKE USERS SAY BYE

Page 123: Continuous Delivery Antipatterns

@ags313#DV13-cda

CHANGE BACKEND YOU CAN

Page 124: Continuous Delivery Antipatterns

@ags313#DV13-cda

FORCING DOESN’T WORK

Page 125: Continuous Delivery Antipatterns

@ags313#DV13-cda

ASK IF NEW FEATURES THEY WANT

Page 126: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: DEPLOYMENT FAILURES

Page 127: Continuous Delivery Antipatterns

@ags313#DV13-cdaidea from: paulklipp.com/blog

Page 128: Continuous Delivery Antipatterns

@ags313#DV13-cda

DEPLOYMENTSDO YOU TRACK THEM?

Page 129: Continuous Delivery Antipatterns

@ags313#DV13-cda

FAILED DEPLOYMENT PROCEDUREROLLBACK? OR DOWNTIME?

Page 130: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: TEST YOUR ROLLBACK

Page 131: Continuous Delivery Antipatterns

@ags313#DV13-cda

AS YOU TEST YOUR BACKUPS

Page 132: Continuous Delivery Antipatterns

@ags313#DV13-cda

PROBLEM: STATE

Page 133: Continuous Delivery Antipatterns

@ags313#DV13-cda

LONG RUNNING ……

Page 134: Continuous Delivery Antipatterns

@ags313#DV13-cda

SAGAS?

http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf

Page 135: Continuous Delivery Antipatterns

@ags313#DV13-cda

DATABASES…

Page 136: Continuous Delivery Antipatterns

@ags313#DV13-cda

ENVIRONMENTS

Page 137: Continuous Delivery Antipatterns

@ags313#DV13-cda

LOVE PARTIAL FAILURES

Page 138: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: BUILD IN SWITCHES

Page 139: Continuous Delivery Antipatterns

@ags313#DV13-cda

DO: APP IS ENV AWARE

Page 140: Continuous Delivery Antipatterns

@ags313#DV13-cda

DEVENV

Page 141: Continuous Delivery Antipatterns

@ags313#DV13-cda

AUTOMATE IT!

Page 142: Continuous Delivery Antipatterns

@ags313#DV13-cda

CHEF, PUPPET, ANSIMBLE, DOCKER, VAGRANT

pick any

Page 143: Continuous Delivery Antipatterns

@ags313#DV13-cda

package "haproxy" do!action :install!

end!!template "/etc/haproxy/haproxy.cfg" do!source "haproxy.cfg.erb"!owner "root"!group "root"!mode 0644!notifies :restart, "service[haproxy]"!

end!!service "haproxy" do!supports :restart => true!action [:enable, :start]!

end!

Page 144: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASE!

Page 145: Continuous Delivery Antipatterns

@ags313#DV13-cda

RELEASE!…the Kraken

Page 146: Continuous Delivery Antipatterns

@ags313#DV13-cda

Page 147: Continuous Delivery Antipatterns

@ags313#DV13-cda

thanks!

Page 148: Continuous Delivery Antipatterns

@ags313#DV13-cda

thanks!please tweet && feedback!