Development Analysis Design Implementation Verification Operations Observation 1: Rigidity A sequential flow of progress towards an anticipated end goal.
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.
Development Analysis Design Implementation Verification Operations Observation 3: Low Customer Involvement Course corrections are not part of the process.
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.
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.
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.
2013 Analysed ~50.000 real-life software development projects from 2004 – 2012 Medium Companies (30%) Small Companies (20%) Large Companies (50%) Fortune 1000-type
2013 Project Resolution: Large vs. Small Projects in 2012 RESOLUTION Large Projects Small Projects Successful 10 % 76 % Failed 38 % 4 % Challenged 52 % 20 %
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
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
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
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
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
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
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
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
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
Delivery Deployment Pipeline 1. Commit Stage Version Control Local Directory Code retrieve Unit Tests Code Analyses run run fast-running, environment agnostic tests
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
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
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