the discovery of penicillin · the discovery of penicillin alexander fleming discovered it in 1928,...
TRANSCRIPT
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
Edge Load Balancer
Web
Application
Web
Application
Customer Service
Application
Web
Application
Customer Service
Application
Frontend Application Servers
Web
Application
Web
Application
Web
Application
Business
Servers
Business
Servers
Business
Servers
MSMQ
Biztalk
Distributed
Cache
Session DB Transactional DB Biztalk DB
git pull
Version
Build
Unit Test
Package
ArtifactRepository
Build Test
ArtifactRepository
Get Package
Deploy Test Environment
Component
Service
UI
Deploy
ArtifactRepository
Get Package
Deploy Environment
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
https://nodesource.com/blog/microservices-in-nodejs
Image by @lizparody23
Edge Load Balancer
Service
Repository
Apply Domain
Event Store
Command Handlers
Event Handlers
Service
Repository
Account Domain
Event Store
Command Handlers
Event Handlers
Service
Repository
Product Domain
Event Store
Command Handlers
Event Handlers
Service
Repository
Customer Domain
Event Store
Command Handlers
Event Handlers
E
V
E
N
T
B
U
S
Build
Functional
Tests
Regression
Tests
Deploy to
StageDeploy to
Production
Service A
Service B
Build
Functional
Tests
Regression
Tests
Deploy to
StageDeploy to
Production
Build
Functional
Tests
Regression
Tests
Deploy to Stage Deploy to Production
Service A
Build
Functional
Tests
Regression
Tests
Service B
@kmugrage
@kmugrage
@kmugrage
Write the code
Run the build
Show the feature
Merge the code
Done
Create feature flag
Write unit test
Write the code
Merge to master
CI server builds
@kmugrage
Write the functional
test
Show the feature
DeployRelease (flip the
flag)
Customer uses
featureThis includes any infrastructure,
pipeline, data model or other changes
required to support the feature!
@kmugrage
Write the code
Run the build
Show the feature
Merge the code
Done
@kmugrage
Write the code
Run the build
Show the feature
Merge the code
Done
Write Tests
Run TestsSend back
to devWait… Repeat
“Dev” Team
“QA”, Security, Compliance
@kmugrage
Write the code
Run the build
Show the feature
Merge the code
Done
Write Tests
Run TestsSend back
to devWait… Repeat
“Dev” Team
“QA”, Security, Compliance
Provision Machines
Automate Deployment
Send back to dev
Wait… Repeat“DevOps” Team
@kmugrage
“
”
@kmugrage
“
”
@kmugrage
@kmugrage
Create feature flag
Write unit test
Write the code
Merge to master
CI server builds
Write the functional
test
Show the feature
DeployRelease (flip the
flag)
Customer uses feature
Write the code
Run the build
Show the feature
Merge the code
Done
Write Tests
Run TestsSend back
to devWait… Repeat
Provision Machines
Automate Deployment
Send back to dev
Wait… Repeat
@kmugrage
Create feature flag
Write unit test
Write the code
Merge to master
CI server builds
Write the functional
test
Show the feature
DeployRelease (flip the
flag)
Customer uses feature
Write the code
Run the build
Show the feature
Merge the code
Done
Write Tests
Run TestsSend back
to devWait… Repeat
Provision Machines
Automate Deployment
Send back to dev
Wait… Repeat
@kmugrage
“
”
@kmugrage
@kmugrage
“
”
@kmugrage
@kmugrage
@kmugrage
I
deploy
am
deploy
working
deploy
on
deploy
this
deploy
You will now be measured on deploys per day
YAY!!!
Our Pipeline
@kmugrage
Our Pipeline
@kmugrage
Accelerate State of DevOps
@kmugrage
Elite Performers
@kmugrage
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%
Summary
CD isn’t about faster.
CD in a DevOps culture is!
Deployment goals should be business driven.
Metrics drive behaviors.
@kmugrage
@kmugrage