continuous delivery

Post on 15-Jan-2015

502 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation from JUG, 14.04.2013

TRANSCRIPT

Continuous Delivery

Helping your business win by bringing the pain forward

Agenda

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

Introduction

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

Agile Manifesto

What is continuous delivery?

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

Inspired by Lean Startup

Deliver the right thing. Frequently.

«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.»

So how frequently?

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

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:

Who does continuous delivery?

Let’s rock.

Redefine «Done»

Coded Reviewed Checked-in Built Tested Demoed

Released to end-user.

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

Reduce risk of release

« If it hurts, do it more frequently »

How?

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

The Deployment Pipeline

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

Build only once.

Deploy the same way to every environment.

Fail fast.

Automate everything (almost).

Build quality in.

Keep code always releasable.

Treat every version is a release candidate.

Contradicts with traditional approaches.

Quality goes up.

People care.

Version everything.

Single version. No major/minor/patch increments.

Version control everything.

Code, Configuration, Infrastructure…

Test excessively.

Provide recovery plan.

Measure.

- Small increments- Deploy components independently- Leave backward compatibility

Avoid «Big Bang» releases

Avoid branches

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

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

Dan Bodart

Build a modular platform of micro-services.

Make no exceptions

Even urgent production fix should pass the same deployment pipeline.

User disruption

downtime deployments0

Blue - Green deployment

Deployment is not a Release.

Release is a marketing decision.

Smoke test deployment.

Release only after that.

Feature Toggles

Branch by AbstractionMultiple versions in a single code base.

Backward compatibility is a key.

State is pain in the ass, but remediable with redundancy

Canary releasingRelease to a subset of users.

Anti-Patterns

Code Freeze ceremony

Deployment rarely / late

Avoid late contact with reality.

Manual environment configuration

Privileged deploy team

Not repeatable process

Slight differences

Manual deployments

Sleep well. Forget 2.00 AM deployments.

Hard to track

Adoption

Forget special «Continuous Delivery» projects

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

Raise confidence that

Change can be safe enough.

Do not be afraid to fail.

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

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 | 改善

Find the right team and start kicking ass.

Tools

Versioning

Build & dependency management

CI + Pipelining

Automation

Infrastructure Script streamlining

Glu Capistrano

DB migrations

ATDD + Living documentation

Monitoring

Micro-services?

Conclusion

Continuous Delivery challenges your engineering skills.

Are you ready to accept the challenge?

Thank you!

top related