Upload
eduards-sizovs
View
169
Download
2
Embed Size (px)
DESCRIPTION
Continuous Delivery (DevClub 17.07.2014)
Citation preview
Continuous Delivery
Helping your business win by bringing the pain forward
Eduards SizovsFounder & Consultant
... Interested in bringing Continuous Delivery to your company?
No problem! Just let us know
Software development & consulting
www.craftsmans.lv
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.
! Continuous Deployment is a different thing.
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:
Who does continuous delivery?
Let’s rock.
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)
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 (except API).
Version control everything.
Code, Configuration, Infrastructure…
Test excessively.
Provide recovery plan.
… and reduce Mean Time To Recovery (MTTR)
Measure everything.
- Code Quality- Cycle Time- Lead Time
- Build, test duration- # of Built failures- # of Defects
- 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.
... Interested in bringing Micro Services to your company?
No problem! Just let us know www.craftsmans.lv
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
Java people?
Branch by AbstractionMultiple versions in a single code base.
Backward compatibility is a key.
State is pain in the ass, but remediable with redundancy
Dealing with backward compatible code:http://goo.gl/MMEO70
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
Who? When? Why? What?
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.
Engineering Velocity: Shifting the Curve at Netflixhttp://goo.gl/D10wGH
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 & Storage
hub.docker.com
Build & dependency management
CI + Pipelining + Deployments
Automation
Infrastructure
Script streamlining
DB migrationsLHM (soundcloud/lhm)
Schema-less DBs?
Configuration Management
Apache ZooKeeper Apache Curator
Netflix Archaiusgithub.com/Netflix/archaius
ATDD + Living documentation
Monitoring
www.getapp.com/alternatives/new-relic-application
https://github.com/Netflix/Hystrix
Micro-services?
http://www.slideshare.net/eduardsi/micro-service-architecture
Conclusion
Continuous Delivery challenges your engineering skills.
Are you ready to accept the challenge?
Thank you!