The Discovery of Penicillin  Alexander Fleming discovered it in 1928, by accident  First shown to be effective on bacterial infection in mice in 1940  First human treatment in 1941  United States produced 2.3 million doses in time for the WWII Normandy invasion @kmugrage

Other Great Accidents  Microwave Oven  Quinine  X-rays  Velcro  Insulin  Continuous Delivery @kmugrage

15 years ago we knew everything  Defined Continuous Integration  Created the first (or second) CI server  Created Selenium @kmugrage

Java – Write once, run anywhere  Developed a system on Windows laptops to be deployed to a Solaris cluster  Did all of the right Continuous Integration things  One small issue… @kmugrage

It didn’t work in production @kmugrage

Conan The Deployer  Massive shell script  Automated deployment to a cluster after every successful CI run  Deployment became a non-issue @kmugrage

Results of the Accident  The Deployment Production Line  The Continuous Delivery Book  GoCD @kmugrage

@kmugrage

@kmugrage

Frontend Edge Load Balancer Web Application Web Application Application Servers Web Application Web Application Web Application MSMQ Web Application Biztalk Customer Service Application Customer Service Application Business Servers Business Servers Business Servers Distributed Cache Session DB Transactional DB Biztalk DB

Build Test Deploy Get Package git pull Artifact Repository Deploy Test Environment Get Package Artifact Repository Deploy Environment Version Build UI Artifact Repository Unit Test Service Package Component Smoke Tests

It was automated now  It worked in production (yay!)  It was hard to scale the applications  It was hard to work on complicated applications @kmugrage

Image by @lizparody23 https://nodesource.com/blog/microservices-in-nodejs

Edge Load Balancer Product Domain Apply Domain Service Service Repository Repository Command Handlers Event Handlers Event Store Account Domain Service Repository Command Handlers Event Handlers Event Store E V E N T B U S Command Handlers Event Handlers Event Store Customer Domain Service Repository Command Handlers Event Handlers Event Store

Service A Functional Tests Build Deploy to Stage Deploy to Production Deploy to Stage Deploy to Production Regression Tests Service B Functional Tests Build Regression Tests

Service A Functional Tests Build Regression Tests Deploy to Stage Service B Functional Tests Build Regression Tests Deploy to Production

@kmugrage

@kmugrage

Write the code @kmugrage Run the build Show the feature Merge the code Done

@kmugrage Create feature flag Write unit test Write the functional test Show the feature Write the code Merge to master CI server builds Release (flip the flag) Customer uses feature This includes any infrastructure, pipeline, data model or other changes required to support the feature! Deploy

Write the code @kmugrage Run the build Show the feature Merge the code Done

“Dev” Team “QA”, Security, Compliance @kmugrage Write the code Run the build Show the feature Merge the code Done Write Tests Run Tests Send back to dev Wait… Repeat

“Dev” Team “QA”, Security, Compliance “DevOps” Team @kmugrage Write the code Run the build Show the feature Merge the code Done Write Tests Run Tests Send back to dev Wait… Repeat Provision Machines Automate Deployment Send back to dev Wait… Repeat

@kmugrage

“ ” @kmugrage

“ ” @kmugrage

Create feature flag Write the functional test @kmugrage Write unit test Show the feature Write the code Deploy Merge to master Release (flip the flag) Write the code Run the build Show the feature Merge the code Done Write Tests Run Tests Send back to dev Wait… Repeat Provision Machines Automate Deployment Send back to dev Wait… Repeat CI server builds Customer uses feature

Create feature flag Write the functional test @kmugrage Write unit test Show the feature Write the code Deploy Merge to master Release (flip the flag) Write the code Run the build Show the feature Merge the code Done Write Tests Run Tests Send back to dev Wait… Repeat Provision Machines Automate Deployment Send back to dev Wait… Repeat CI server builds Customer uses feature

@kmugrage

“ ” @kmugrage

@kmugrage

“ ” @kmugrage

@kmugrage

You will now be measured on deploys per day YAY!!! I deploy am deploy working deploy on deploy this deploy @kmugrage

Our Pipeline @kmugrage

Our Pipeline @kmugrage

Accelerate State of DevOps @kmugrage

Elite Performers Aspect of Software Delivery Performance Deployment frequency On-demand (multiple deploys per day) Lead time for changes Less than one day Time to restore services Less than one hour Change failure rate 0-15% @kmugrage

Summary  CD isn’t about faster.  CD in a DevOps culture is!  Deployment goals should be business driven.  Metrics drive behaviors. @kmugrage

@kmugrage