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

55
State of Continuous Delivery in 2015 Pavel Chunyayev Minsk, 15-5-2015

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

State of Continuous Delivery in 2015

Pavel ChunyayevMinsk, 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 = WasteReleased 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 != ToolsCD != 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 – WhatDevOps - 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

CultureAutomationLeanMeasurementSharing

Automate!

• Build• DB schema changes• Tests• Infrastructure• Deployments• Monitoring

Release != deployment

Deployment = boring repeatableRelease = 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 :)

[email protected]@PavelChunyayev

Any questions?