A presentation at DevOpsDays Stockholm in in Stockholm, Sweden by Ken Mugrage
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