the discovery of penicillin · the discovery of penicillin alexander fleming discovered it in 1928,...

Post on 04-Aug-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related