Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Continuous Delivery 101
1. MARTIN ETMAJER
Founder | GetCloudnative e.U. Version: 20180708
A set of principles and practices to get your ideas
into your users‘ hands quickly and confidently.
Continuous Delivery 101
4. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 4
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
5. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 5
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
Observation 1: Rigidity
A sequential flow of progress
towards an anticipated end goal.
6. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 6
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
Observation 2: Change Resistance
The entire product is specified in advance (assumes no change).
Efforts put into heavy documentation fosters change resistance.
9. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 9
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
Observation 3: Low Customer Involvement
Course corrections are not part of the process.
10. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 10
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
Observation 4: Accumulation of Risk
Verification and testing occurs only in the end.
Problems can go unnoticed for a very long time.
11. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 11
Traditional Software Development
Release
Candidate
Development
We need this fix to
go live tomorrow!
Operations
Not so fast!
The Wall
Observation 5: Long and Error-Prone Delivery
Releases are characterized by lengthy approval
processes and intensive manual labor.
13. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 13
Traditional Software Development
Analysis
Design
Implementation
Verification
Operations
Observation 6: Slow Time-to-Market
Value is created earliest (if at all) once
the entire product has been delivered.
14. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 14
Chaos Manifesto 2013
Analysed ~50.000 real-life software development projects from 2004 – 2012
Europe (25%)USA (60%)
Others (15%)
15. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 15
Chaos Manifesto 2013
Analysed ~50.000 real-life software development projects from 2004 – 2012
Medium Companies
(30%)
Small Companies
(20%)
Large Companies
(50%)
Fortune 1000-type
16. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 16
Chaos Manifesto 2013
Project Resolution
RESOLUTION 2004 2006 2008 2010 2012
Successful 29 % 35 % 32 % 37 % 39 %
Failed 18 % 19 % 24 % 21 % 18 %
Challenged 53 % 46 % 44 % 42 % 43 %
worst year best year
positive trend due to decrease in Waterfall and increase in Agile projects
17. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 17
Chaos Manifesto 2013
Project Resolution: Large vs. Small Projects in 2012
RESOLUTION Large Projects Small Projects
Successful 10 % 76 %
Failed 38 % 4 %
Challenged 52 % 20 %
19. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 19
Chaos Manifesto 2013
Large vs. Small Projects
Large Projects
> $10M in labor cost
almost no chance of being successful,
2,5x more likely to being challenged,
10x more likely to fail outright
Small Projects
< $1M in labor cost
> 70% chance of being successful,
deliver results used to create ROI
20. Source: dilbert.com
Focus on High-Value Features
„Natural expectations is for executives and stakeholders to want it all and want it all now.“
The Standish Group. Chaos Manifesto 2013: Think Big, Act Small
21. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 21
Chaos Manifesto 2013
Focus on High-Value Features
OFTEN USED SOMETIMES USED HARDLY EVER OR NEVER USED
20% provide 80% of the value
50% are hardly ever or never used
30% are used only sometimes or infrequently
22. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 22
Chaos Manifesto 2013
Focus on High-Value Features
OFTEN USED SOMETIMES USED
focusing on these features maximizes investment in
software development and improves user satisfaction
focusing on features to the right doesn‘t increase
project value much and may set you up for failure
24. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 24
„Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.“
Agile Manifesto Principle No. 1
25. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 25
Continuous Delivery
A set of principles and practices to get your ideas into your users‘ hands quickly and confidently.
minimize
Customer
learning
this is where you create value
(cycle) time
Idea
26. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 26
Scientific Method
A continuous and iterative process for running experiments.
Hypothesis Experiment
analyze data and draw conclusions
testformulate
27. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 27
Faster Time-to-Market
An automated build, deploy, test and release process greatly reduces the feature cycle time.
Lower Risks
Automation makes software releases reliable and repeatable (if not to say boring).
Higher Quality
Automated testing in production-like environments greatly reduces defects in production.
Better Products
The ability to release features at any time enables working in small steps and running experiments.
Happier Teams
Continuous Delivery makes releases less painful. Teams can focus on being creative and solving problems.
Continuous Delivery
Benefits
29. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 29
Create an Automated, Repeatable and Reliable Release Process
Releasing software into production should be as easy as selecting a version and pushing a button.
Automate your build, deploy, test and release process up to the point where human decision making is required.
Everyone is Responsible
Don‘t incentivize silo behavior. Everyone must work together on achieving the company‘s goals.
Make improving work a part of your routine and never be satisfied with the status quo.
Keep Everything in Version Control
Maintain a single source of truth for your source code, configuration, data, scripts, and documentation.
Build Quality In!
Integrate feedback loops to catch process defects as early as possible (while they‘re cheap) – then fix them.
Continuous Delivery
Principles
31. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 31
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Code
check-in
32. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 32
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Code
check-in
query
check-out
each check-in triggers a pipeline run
CI/CD Server (Pipeline Executor)
ReleaseTestDeployBuild
33. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 33
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Code
check-in
query
check-out
Business
push button
each check-in triggers a pipeline run
a build advances along the pipeline in stages
(in case of error, the pipeline is stopped)
CI/CD Server (Pipeline Executor)
ReleaseTestDeployBuild
34. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 34
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Production
Environment
Code
check-in
Application
release
query
check-out
Business
push button
Customer
use app
each check-in triggers a pipeline run
a build advances along the pipeline in stages
(in case of error, the pipeline is stopped)
CI/CD Server (Pipeline Executor)
ReleaseTestDeployBuild
35. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 35
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Production
Environment
Code
check-in
Application
release
query
check-out
Business
push button
Customer
use app
CI/CD Server (Pipeline Executor)
ReleaseTestDeployBuild
Fast Feedback Loops
36. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 36
The Continuous Delivery Deployment Pipeline
1. Commit Stage
Version
Control
Local
Directory
Code
retrieve
37. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 37
The Continuous Delivery Deployment Pipeline
1. Commit Stage
Version
Control
Local
Directory
Code
retrieve
Unit Tests
run
fast-running, environment agnostic tests
38. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 38
The Continuous Delivery Deployment Pipeline
1. Commit Stage
Version
Control
Local
Directory
Code
retrieve
Unit Tests Code Analyses
run run
fast-running, environment agnostic tests
39. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 39
The Continuous Delivery Deployment Pipeline
1. Commit Stage
Version
Control
Local
Directory
Code
retrieve
Unit Tests Release ArtifactCode Analyses
run run build
fast-running, environment agnostic tests
40. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 40
The Continuous Delivery Deployment Pipeline
1. Commit Stage
Version
Control
Local
Directory
Unit Tests Release ArtifactCode Analyses Artifact
Repository
store
Code
retrieve run run build
fast-running, environment agnostic tests
artifacts are built exactly once and kept for later stages
41. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 41
The Continuous Delivery Deployment Pipeline
2. Acceptance Testing Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
42. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 42
The Continuous Delivery Deployment Pipeline
2. Acceptance Testing Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
configure
Staging Environment
49. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 49
The Continuous Delivery Deployment Pipeline
3. Exploratory Testing Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
Release Artifact Smoke Tests
configure
deploy run
Staging Environment
50. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 50
The Continuous Delivery Deployment Pipeline
3. Exploratory Testing Stage
Release Artifact Smoke Tests Exploratory Tests
manual tests
Release Artifact
retrieve
Artifact
Repository
Local
Directory
configure
deploy run run
Staging Environment
51. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 51
The Continuous Delivery Deployment Pipeline
4. Release Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
52. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 52
The Continuous Delivery Deployment Pipeline
4. Release Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
configure
Production Environment
53. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 53
The Continuous Delivery Deployment Pipeline
4. Release Stage
Release Artifact
retrieve
Artifact
Repository
Local
Directory
Release Artifact
configure
deploy
Production Environment
54. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 54
The Continuous Delivery Deployment Pipeline
4. Release Stage
Release Artifact Smoke Tests
Release Artifact
retrieve
Artifact
Repository
Local
Directory
configure
deploy run
Production Environment
55. MARTIN ETMAJER
Founder | GetCloudnative e.U. Slide 55
The Continuous Delivery Deployment Pipeline
Overview
Developer Version
Control
Production
Environment
Code
check-in
Application
release
query
check-out
Business
push button
Customer
use app
each check-in triggers a pipeline run
a build advances along the pipeline in stages
(in case of error, the pipeline is stopped)
CI/CD Server (Pipeline Executor)
ReleaseTestDeployBuild