Slide 1

Slide 1 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Version: 20180804 A set of principles and practices to get your ideas into your users‘ hands quickly and confidently. Continuous Delivery 101

Slide 2

Slide 2 text

[email protected] @metmajer Innovation Technologist & Strategist. Founder at GetCloudnative. Open Source Maintainer. Martin Etmajer

Slide 3

Slide 3 text

Why Continuous Delivery?

Slide 4

Slide 4 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 4 Traditional Software Development Analysis Design Implementation Verification Operations

Slide 5

Slide 5 text

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.

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

Communicating Requirements is Hard… Source: CakeWrecks.com

Slide 8

Slide 8 text

Communicating Requirements is Hard… Source: CakeWrecks.com shared documents aren‘t shared understanding

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 11 Traditional Software Development Release Candidate Development We need this 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.

Slide 12

Slide 12 text

Development (Ownership) vs. Operations (Accountability) Source: amazon.com

Slide 13

Slide 13 text

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.

Slide 14

Slide 14 text

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%)

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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 %

Slide 18

Slide 18 text

…Predicting the Future is Even Harder ;-) Source: dilbert.com

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

What is Continuous Delivery?

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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 test formulate

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

How to Continuous Delivery?

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Continuous Delivery The Standard Reference „Reliable software releases through build, test, and deployment automation.“

Slide 31

Slide 31 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 31 The Continuous Delivery Deployment Pipeline Overview Developer Version Control Code check-in

Slide 32

Slide 32 text

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) Release Test Deploy Build

Slide 33

Slide 33 text

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) Release Test Deploy Build

Slide 34

Slide 34 text

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) Release Test Deploy Build

Slide 35

Slide 35 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 35 The Continuous Delivery Deployment Pipeline Overview Developer Business Fast Feedback Loops

Slide 36

Slide 36 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 36 The Continuous Delivery Deployment Pipeline 1. Commit Stage Version Control Local Directory Code retrieve

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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 Artifact Code Analyses run run build fast-running, environment agnostic tests

Slide 40

Slide 40 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 40 The Continuous Delivery Deployment Pipeline 1. Commit Stage Version Control Local Directory Unit Tests Release Artifact Code Analyses Artifact Repository store Code retrieve run run build fast-running, environment agnostic tests artifacts are built exactly once and kept for later stages

Slide 41

Slide 41 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 41 The Continuous Delivery Deployment Pipeline 2. Acceptance Testing Stage Release Artifact retrieve Artifact Repository Local Directory

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 43 The Continuous Delivery Deployment Pipeline 2. Acceptance Testing Stage Release Artifact retrieve Artifact Repository Local Directory Release Artifact configure deploy Staging Environment

Slide 44

Slide 44 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 44 The Continuous Delivery Deployment Pipeline 2. Acceptance Testing Stage Release Artifact retrieve Artifact Repository Local Directory Release Artifact Smoke Tests configure deploy run Staging Environment

Slide 45

Slide 45 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 45 The Continuous Delivery Deployment Pipeline 2. Acceptance Testing Stage Release Artifact Smoke Tests Acceptance Tests long-running tests Release Artifact retrieve Artifact Repository Local Directory configure deploy run run Staging Environment

Slide 46

Slide 46 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 46 The Continuous Delivery Deployment Pipeline 3. Exploratory Testing Stage Release Artifact retrieve Artifact Repository Local Directory

Slide 47

Slide 47 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 47 The Continuous Delivery Deployment Pipeline 3. Exploratory Testing Stage Release Artifact retrieve Artifact Repository Local Directory configure Staging Environment

Slide 48

Slide 48 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 48 The Continuous Delivery Deployment Pipeline 3. Exploratory Testing Stage Release Artifact retrieve Artifact Repository Local Directory Release Artifact configure deploy Staging Environment

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

MARTIN ETMAJER Founder | GetCloudnative e.U. Slide 51 The Continuous Delivery Deployment Pipeline 4. Release Stage Release Artifact retrieve Artifact Repository Local Directory

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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) Release Test Deploy Build

Slide 56

Slide 56 text

What Else is There?

Slide 57

Slide 57 text

Continuous Delivery Presenter: Martin Fowler

Slide 58

Slide 58 text

The Rationale for Continuous Delivery – What Does Good Look Like? Presenter: Dave Farley

Slide 59

Slide 59 text

DevOps