State of Continuous Delivery
in 2015
Pavel Chunyayev
Minsk, 15-5-2015
Our common goal
• Give customer what they want
• When they want
• At the lowest costs possible
• Quickly, cheaply and reliably implement ideas for customers and
receive feedback.
One in six IT projects have an average cost overrun of 200% and a
schedule overrun of 70%. (Harvard Business Review, 2011)
75% of business and IT executives anticipate their software projects will
fail. (Geneca, 2011)
Fewer than a third of all projects were successfully completed on time
and on budget over the past year. (Standish Group, 2013)
Software delivery process
Design Develop Test Operate
Last mile problem
• Streamlined value delivery from left to right
• We need to remove the wall of separation between development/QA
and Production.
OperateLast mile
Unreleased changes = Waste
Released changes = Value
Our highest priority is to satisfy the
customer through early and
continuous delivery
of valuable software.
The Agile Manifesto
Continuous Delivery overview
Inception
•Business idea
•Needed immediately
•Should generate
money
Plan
•Create user stories
•Prioritize
•Refined
•Estimated
Develop
•Scrum sprints
•Create branch
•Develop
•Code review
Integrate
•Commit
•Trigger pipeline
•Build
•Unit testing
•Integration testing
Testing
•Journey across
environments
•Acceptance
•Capacity
•Security
•Manual/exploratory
Release
•Automated
•Push-button
•Zero-downtime
•Canary
Operate
•Monitoring
•Validation
•Money generation
•Disposal
Principles of CD
• Create repeatable and reliable process for releasing software
• Keep everything in the source control
• Automate (almost) everything
• Build quality in
• Redefine ‘Done’ to mean released
• Make everybody responsible for the release process
• Implement continuous improvements
Repeatable and reliable process
Everything in the source control
Automate (almost) everything
Build quality in
‘Done’ means released
Everybody is responsible for the
release process
Implement continuous
improvements
Principles of CD
• Create repeatable and reliable process for releasing software
• Keep everything in the source control
• Automate (almost) everything
• Build quality in
• Redefine ‘Done’ to mean released
• Make everybody responsible for the release process
• Implement continuous improvements
Continuous Delivery vs
Continuous Deployment
• Possibility to aggregate changes in preproduction
• Possibility to deploy every change/commit
Quality > Speed
CD != Tools
CD != CI++
CD = modern application lifecycle
management
CD = Changing the way we deliver
IT services (software) to our users
How long would it take your
organization to deploy a change that
involves just one single line of code?
Do you do this on a repeatable,
reliable basis?
Does each deployment pass
through the same stages?
How to start?
• Agile development
• Continuous Integration
• Infrastructure automation
• Automated testing
• Automated deployments
• Shared tools and procedures
• Shared goals and communication
Agile
Inception Plan Develop Integrate Testing Release Operate
Agile
CD builds up on Agile
Agile is the best approach to
develop software
CD is the best approach to deliver
software
Inception Plan Develop Integrate Testing Release Operate
Agile
DevOps
Inception Plan Develop Integrate Testing Release Operate
DevOps
DevOps - Unified IT, synchronized
technically and highly
collaborative
Continuous Delivery – What
DevOps - How
Conway’s law
Organizations which design systems ... are constrained to produce
designs which are copies of the communication structures of these
organizations.
—Melvin Conway
If the architecture of the system and the architecture of the
organization are at odds, the architecture of the organization wins.
—Ruth Malan
Build teams that look like the
architecture you want
CALMS
Culture
Automation
Lean
Measurement
Sharing
Automate!
• Build
• DB schema changes
• Tests
• Infrastructure
• Deployments
• Monitoring
Release != deployment
Deployment = boring repeatable
Release = marketing
CD pipeline = process model
Process perspective
• Workflow
• Each step – repeatable
• No defects go further
• No local optimizations that degrade overall performance
• Increase the flow, analyze and optimize
• Reduce the batch size
• Improve at the bottleneck
Inception Plan Develop Integrate Testing Release Operate
Lean
Inception Plan Develop Integrate Testing Release Operate
Lean
Lean software development
• Deliver as fast as possible
• Build quality in
• Optimize for the whole
• Eliminate waste
• Amplify learning
• Decide as late as possible
• Empower the team
Waste
• Inventory (work waiting)
• Defects
• Handovers
• Manual setups
• Manual tests
• Manual deployments
• Slow internal communication
Most delay in product
development is a wait time
Shorten cycle time
• Waterfall – months
• Agile (Iterative development) – weeks
• Kanban – days
• CD - hours
Quickly validate business ideas
Lean startup/enterprise
1. Make a guess based on experience and observation.
2. Propose an explanation - hypothesis.
3. Make a prediction from the hypothesis.
4. Test the prediction.
5. Repeat!
The most important skill to
master?
The ability to improve
Yesterday’s best practice is
tomorrow’s anti-pattern
Overview
Inception Plan Develop Integrate Testing Release Operate
Lean
DevOps
Agile
Some big shifts happening
• Testing in production
• Microservices
• Containers/Cloud
• Role of QA/System administrator
Key takeaways
• Create repeatable and reliable process
for releasing software
• Automate (almost) everything
• Build quality in
• Reduce the batch size
• Improve continuously :)
pavel@levi9.com
@PavelChunyayev
Any questions?

Павел Чуняев - State of Continuous Delivery in 2015

Editor's Notes

  • #9 Time perspective for each step! Bottlenecks! Every company has this! From waterfall to multiple-releases-a-day unicorns.
  • #36 Changing not directly, but through our actions, through project implementations, through every day work.