73
Continuous Delivery Helping your business win by bringing the pain forward

Continuous Delivery

Embed Size (px)

DESCRIPTION

Presentation from JUG, 14.04.2013

Citation preview

Page 1: Continuous Delivery

Continuous Delivery

Helping your business win by bringing the pain forward

Page 2: Continuous Delivery

Agenda

• Introduction• Deployment pipeline• User disruption• Anti-patterns• Adoption• Tools• Conclusion• Q&A

Page 3: Continuous Delivery

Introduction

Page 4: Continuous Delivery

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

Agile Manifesto

Page 5: Continuous Delivery

What is continuous delivery?

Agile methodology for reducing the cost, time and risk of delivering incremental changes to users.

Page 6: Continuous Delivery

Inspired by Lean Startup

Page 7: Continuous Delivery

Deliver the right thing. Frequently.

Page 8: Continuous Delivery

«You can’t just ask customers what they want and then try to give that to them.

By the time you get it built, they’ll want something new.»

Page 9: Continuous Delivery

So how frequently?

Deliver fast-enough so that a customer didn’t have time to change their mind.

Page 10: Continuous Delivery

Goals

- Build the right thing (MVP, eliminate waste)- Reduce lead time (reduce WiP, eliminate bottlenecks)- Reduce cost (optimize, automate)- Reduce risk (resilience built-in, small increments)

Continuously:

Page 11: Continuous Delivery

Who does continuous delivery?

Page 12: Continuous Delivery

Let’s rock.

Page 13: Continuous Delivery

Redefine «Done»

Coded Reviewed Checked-in Built Tested Demoed

Released to end-user.

Page 14: Continuous 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 & Tom PoppendieckImplementing Lean Software Development

Determine cycle time

Page 15: Continuous Delivery

Reduce risk of release

« If it hurts, do it more frequently »

Page 16: Continuous Delivery

How?

Page 17: Continuous Delivery

By implementing end-to-end automation of build, deploy, test and release processes.

Page 18: Continuous Delivery

The Deployment Pipeline

Page 19: Continuous Delivery

A pull system spanning full product cycle.- Fully automated (with push button approvals)- Visible - Measurable- Parallelizable

Page 20: Continuous Delivery
Page 21: Continuous Delivery

Build only once.

Page 22: Continuous Delivery

Deploy the same way to every environment.

Page 23: Continuous Delivery

Fail fast.

Page 24: Continuous Delivery

Automate everything (almost).

Page 25: Continuous Delivery

Build quality in.

Page 26: Continuous Delivery

Keep code always releasable.

Page 27: Continuous Delivery

Treat every version is a release candidate.

Contradicts with traditional approaches.

Page 28: Continuous Delivery

Quality goes up.

People care.

Page 29: Continuous Delivery

Version everything.

Single version. No major/minor/patch increments.

Page 30: Continuous Delivery

Version control everything.

Code, Configuration, Infrastructure…

Page 31: Continuous Delivery

Test excessively.

Page 32: Continuous Delivery

Provide recovery plan.

Page 33: Continuous Delivery

Measure.

Page 34: Continuous Delivery

- Small increments- Deploy components independently- Leave backward compatibility

Avoid «Big Bang» releases

Page 35: Continuous Delivery

Avoid branches

- True Continuous Integration - work only in mainline- No feature branches- No release branches

Page 36: Continuous Delivery

«Feature branching is a poor man’s modular architecture»

Dan Bodart

Build a modular platform of micro-services.

Page 37: Continuous Delivery

Make no exceptions

Even urgent production fix should pass the same deployment pipeline.

Page 38: Continuous Delivery

User disruption

Page 39: Continuous Delivery

downtime deployments0

Page 40: Continuous Delivery

Blue - Green deployment

Page 41: Continuous Delivery

Deployment is not a Release.

Release is a marketing decision.

Page 42: Continuous Delivery

Smoke test deployment.

Release only after that.

Page 43: Continuous Delivery

Feature Toggles

Page 44: Continuous Delivery

Branch by AbstractionMultiple versions in a single code base.

Page 45: Continuous Delivery

Backward compatibility is a key.

State is pain in the ass, but remediable with redundancy

Page 46: Continuous Delivery

Canary releasingRelease to a subset of users.

Page 47: Continuous Delivery

Anti-Patterns

Page 48: Continuous Delivery

Code Freeze ceremony

Page 49: Continuous Delivery

Deployment rarely / late

Avoid late contact with reality.

Page 50: Continuous Delivery

Manual environment configuration

Page 51: Continuous Delivery

Privileged deploy team

Page 52: Continuous Delivery

Not repeatable process

Page 53: Continuous Delivery

Slight differences

Page 54: Continuous Delivery

Manual deployments

Sleep well. Forget 2.00 AM deployments.

Page 55: Continuous Delivery

Hard to track

Page 56: Continuous Delivery

Adoption

Page 57: Continuous Delivery

Forget special «Continuous Delivery» projects

Page 58: Continuous Delivery

noun

1 a feeling of fear or agitation about something that may happen: the men set off in fear and trepidation.

2 trembling motion.

Embrace change

trepidation | trep·i·da·tion

Page 59: Continuous Delivery

Raise confidence that

Change can be safe enough.

Page 60: Continuous Delivery

Do not be afraid to fail.

Learn what doesn’t work first, then see how to make it better.

Page 61: Continuous Delivery

Continuously improve

Japanese for "improvement", or "change for the better"

Refers to philosophy or practices that focus upon continuous improvement of processes in manufacturing, engineering, and business management.

Kaizen | 改善

Page 62: Continuous Delivery

Find the right team and start kicking ass.

Page 63: Continuous Delivery

Tools

Page 64: Continuous Delivery

Versioning

Page 65: Continuous Delivery

Build & dependency management

Page 66: Continuous Delivery

CI + Pipelining

Page 67: Continuous Delivery

Automation

Infrastructure Script streamlining

Glu Capistrano

DB migrations

Page 68: Continuous Delivery

ATDD + Living documentation

Page 69: Continuous Delivery

Monitoring

Page 70: Continuous Delivery

Micro-services?

Page 71: Continuous Delivery

Conclusion

Page 72: Continuous Delivery

Continuous Delivery challenges your engineering skills.

Are you ready to accept the challenge?

Page 73: Continuous Delivery

Thank you!