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

Continuous Delivery (The newest)

Embed Size (px)

DESCRIPTION

Continuous Delivery (DevClub 17.07.2014)

Citation preview

Page 1: Continuous Delivery (The newest)

Continuous Delivery

Helping your business win by bringing the pain forward

Page 2: Continuous Delivery (The newest)

Eduards SizovsFounder & Consultant

... Interested in bringing Continuous Delivery to your company?

No problem! Just let us know

Software development & consulting

www.craftsmans.lv

@[email protected]

Page 3: Continuous Delivery (The newest)

Agenda

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

Page 4: Continuous Delivery (The newest)

Introduction

Page 5: Continuous Delivery (The newest)

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

Agile Manifesto

Page 6: Continuous Delivery (The newest)

What is continuous delivery?

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

Page 7: Continuous Delivery (The newest)

Inspired by Lean Startup

Page 8: Continuous Delivery (The newest)

Deliver the right thing. Frequently.

Page 9: Continuous Delivery (The newest)

«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 10: Continuous Delivery (The newest)

So how frequently?

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

! Continuous Deployment is a different thing.

Page 11: Continuous Delivery (The newest)

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) - Reduce stress (things goes faster, motivation up)

Continuously:

Page 12: Continuous Delivery (The newest)

Who does continuous delivery?

Page 13: Continuous Delivery (The newest)

Let’s rock.

Page 14: Continuous Delivery (The newest)

Redefine «Done»

Coded Reviewed Checked-in Built Tested Demoed

Released to end-user.

According to the latest trends: removed from production (A/B, experiments, backward compatibility)

Page 15: Continuous Delivery (The newest)

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 16: Continuous Delivery (The newest)

Reduce risk of release

« If it hurts, do it more frequently »

Page 17: Continuous Delivery (The newest)

How?

Page 18: Continuous Delivery (The newest)

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

Page 19: Continuous Delivery (The newest)

The Deployment Pipeline

Page 20: Continuous Delivery (The newest)

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

Page 21: Continuous Delivery (The newest)
Page 22: Continuous Delivery (The newest)

Build only once.

Page 23: Continuous Delivery (The newest)

Deploy the same way to every environment.

Page 24: Continuous Delivery (The newest)

Fail fast.

Page 25: Continuous Delivery (The newest)

Automate everything (almost).

Page 26: Continuous Delivery (The newest)

Build quality in.

Page 27: Continuous Delivery (The newest)

Keep code always releasable.

Page 28: Continuous Delivery (The newest)

Treat every version is a release candidate.

Contradicts with traditional approaches.

Page 29: Continuous Delivery (The newest)

Quality goes up.

People care.

Page 30: Continuous Delivery (The newest)

Version everything.

Single version. No major/minor/patch increments (except API).

Page 31: Continuous Delivery (The newest)

Version control everything.

Code, Configuration, Infrastructure…

Page 32: Continuous Delivery (The newest)

Test excessively.

Page 33: Continuous Delivery (The newest)

Provide recovery plan.

… and reduce Mean Time To Recovery (MTTR)

Page 34: Continuous Delivery (The newest)

Measure everything.

- Code Quality- Cycle Time- Lead Time

- Build, test duration- # of Built failures- # of Defects

Page 35: Continuous Delivery (The newest)

- Small increments- Deploy components independently- Leave backward compatibility

Avoid «Big Bang» releases

Page 36: Continuous Delivery (The newest)

Avoid branches

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

Page 37: Continuous Delivery (The newest)

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

Dan Bodart

Build a modular platform of micro-services.

... Interested in bringing Micro Services to your company?

No problem! Just let us know www.craftsmans.lv

Page 38: Continuous Delivery (The newest)

Make no exceptions

Even urgent production fix should pass the same deployment pipeline.

Page 39: Continuous Delivery (The newest)

User disruption

Page 40: Continuous Delivery (The newest)

downtime deployments0

Page 41: Continuous Delivery (The newest)

Blue - Green deployment

Page 42: Continuous Delivery (The newest)

Deployment is not a Release.

Release is a marketing decision.

Page 43: Continuous Delivery (The newest)

Smoke test deployment.

Release only after that.

Page 44: Continuous Delivery (The newest)

Feature Toggles

Java people?

Page 45: Continuous Delivery (The newest)

Branch by AbstractionMultiple versions in a single code base.

Page 46: Continuous Delivery (The newest)

Backward compatibility is a key.

State is pain in the ass, but remediable with redundancy

Dealing with backward compatible code:http://goo.gl/MMEO70

Page 47: Continuous Delivery (The newest)

Canary releasingRelease to a subset of users.

Page 48: Continuous Delivery (The newest)

Anti-Patterns

Page 49: Continuous Delivery (The newest)

Code Freeze ceremony

Page 50: Continuous Delivery (The newest)

Deployment rarely / late

Avoid late contact with reality.

Page 51: Continuous Delivery (The newest)

Manual environment configuration

Page 52: Continuous Delivery (The newest)

Privileged deploy team

Page 53: Continuous Delivery (The newest)

Not repeatable process

Page 54: Continuous Delivery (The newest)

Slight differences

Page 55: Continuous Delivery (The newest)

Manual deployments

Sleep well. Forget 2.00 AM deployments.

Page 56: Continuous Delivery (The newest)

Hard to track

Who? When? Why? What?

Page 57: Continuous Delivery (The newest)

Adoption

Page 58: Continuous Delivery (The newest)

Forget special «Continuous Delivery» projects

Page 59: Continuous Delivery (The newest)

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 60: Continuous Delivery (The newest)

Raise confidence that

Change can be safe enough.

Page 61: Continuous Delivery (The newest)

Do not be afraid to fail.

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

Engineering Velocity: Shifting the Curve at Netflixhttp://goo.gl/D10wGH

Page 62: Continuous Delivery (The newest)

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 63: Continuous Delivery (The newest)

Find the right team and start kicking ass.

Page 64: Continuous Delivery (The newest)

Tools

Page 65: Continuous Delivery (The newest)

Versioning & Storage

hub.docker.com

Page 66: Continuous Delivery (The newest)

Build & dependency management

Page 67: Continuous Delivery (The newest)

CI + Pipelining + Deployments

Page 68: Continuous Delivery (The newest)

Automation

Infrastructure

Script streamlining

DB migrationsLHM (soundcloud/lhm)

Schema-less DBs?

Page 69: Continuous Delivery (The newest)

Configuration Management

Apache ZooKeeper Apache Curator

Netflix Archaiusgithub.com/Netflix/archaius

Page 70: Continuous Delivery (The newest)

ATDD + Living documentation

Page 71: Continuous Delivery (The newest)

Monitoring

www.getapp.com/alternatives/new-relic-application

Page 72: Continuous Delivery (The newest)

https://github.com/Netflix/Hystrix

Page 73: Continuous Delivery (The newest)

Micro-services?

http://www.slideshare.net/eduardsi/micro-service-architecture

Page 74: Continuous Delivery (The newest)

Conclusion

Page 75: Continuous Delivery (The newest)

Continuous Delivery challenges your engineering skills.

Are you ready to accept the challenge?

Page 76: Continuous Delivery (The newest)

Thank you!