IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous...

52
IT’S NOT CONTINUOUS DELIVERY If you can’t deploy to production right now 1

Transcript of IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous...

Page 1: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

IT’S NOT CONTINUOUS DELIVERYIf you can’t deploy to production right now

1

Page 2: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

WHO AM I?

Ken Mugrage

ThoughtWorks Technology Evangelist

@kmugrage

2

Page 3: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

THE THOUGHTWORKS STORY

3

2000Legendary

computer scientist

Martin Fowler joins

TW asChief

Scientist

FirstAgile project

delivered

2003Project forDixons, UK –

Distributed Agile across

UK, India, Canada, US,

Aus

2006ThoughtWorks Studios

started

2002Martin takesContinuous

Integration mainstream

TW takesthe lead in

creating CruiseControl

2004Testing Tools:

•Selenium,

•NUnit

Gartner on TW:

•�Enables users todothings they could not do

before�•�Has business impact;

not just technology forthe

sake ofit�

2008Cruise launch

Twist launch

300+ clients

16offices

Mingle customers in 25

countries

Forrester: TW isone of5

co�s tomakea

difference toAppDev

2001AgileManifesto

written byMartin&

others

2007Mingle launch

25th TWbook

published: TW

Anthology

2009Adaptive ALM™

Mingle 3.0

‘90sHundreds of

AppDev

projects2010Go launch

400 ThoughtWorks

Studios customers in

30+ countries

2013Mingle SaaS

launch

2014Snap launch

GoOpen

Sourced

2015Gauge

replaces

Twist

Page 4: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

WHY THIS TALK

4

Page 5: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

THERE IS NO TRY

5

Page 6: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

WHY CONTINUOUS DELIVERY?

6

We follow these principles: Our highest priority is to satisfy the customer

through early and continuous delivery of valuable software.

Welcome changing requirements, even late in development. Agile processes harness change for

the customer's competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a

preference to the shorter timescale.

Page 7: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PARTIALLY “DONE” MIGHT STILL BE USEFUL

7

Page 8: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PARTIALLY “DONE” MIGHT STILL BE USEFUL

7

Page 9: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PARTIALLY “DONE” MIGHT STILL BE USEFUL

7

Page 10: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

RESPOND TO SECURITY ISSUES

At the time of disclosure, some 17% (around half a million) of the Internet's secure web servers certified by trusted authorities were believed to be vulnerable to the attack, allowing theft of the servers' private keys and users' session cookies and passwords.

The Electronic Frontier Foundation, Ars Technica, and Bruce Schneier all deemed the Heartbleed bug "catastrophic". Forbes cybersecurity columnist Joseph Steinberg wrote, "Some might argue that [Heartbleed] is the worst vulnerability found (at least in terms of its potential impact) since commercial traffic began to flow on the Internet.

https://en.wikipedia.org/wiki/Heartbleed

8

Page 11: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

CODE MANAGEMENTWorking with your version control system

9

Page 12: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE BRANCHING

10

http://martinfowler.com/bliki/FeatureBranch.html

Page 13: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE BRANCHING

11

http://martinfowler.com/bliki/FeatureBranch.html

Page 14: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE BRANCHING

12

http://martinfowler.com/bliki/FeatureBranch.html

Page 15: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

CODE MANAGEMENT

Recommended CI practices

13

Page 16: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

CODE MANAGEMENT

Recommended CI practices

Everyone commits to trunk at least daily

13

Page 17: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

CODE MANAGEMENT

Recommended CI practices

Everyone commits to trunk at least dailyAutomated tests are run for every commit

13

Page 18: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

CODE MANAGEMENT

Recommended CI practices

Everyone commits to trunk at least dailyAutomated tests are run for every commitAvoid branches

13

Page 19: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

RELEASING INCOMPLETE WORKHow to deliver faster than you can finish a feature

14

Page 20: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE TOGGLES

15

Page 21: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE TOGGLES

15

before

function calculateTax(){ // current implementation lives here }

Page 22: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE TOGGLES

15

before

function calculateTax(){ // current implementation lives here }

after

function calculateTax(){ var useNewAlgorithm = false; // useNewAlgorithm = true; // UNCOMMENT IF YOU ARE WORKING ON THE NEW SR ALGORITHM if( useNewAlgorithm ){ return enhancedSplineReticulation(); }else{ return oldFashionedSplineReticulation(); } } function oldFashionedTaxCalculation(){ // current implementation lives here } function enhancedTaxCalculation(){ // TODO: implement better SR algorithm }

Pete Hodgson - http://martinfowler.com/articles/feature-toggles.html

Page 23: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEATURE TOGGLES

16

Pete Hodgson - http://martinfowler.com/articles/feature-toggles.html

Page 24: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINES YOU SHOULD BE INCLUDING

17

Page 25: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

SECURITY TESTING

18

Page 26: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

SECURITY TESTING

Test before you commit

Have you included private keys? Authentication tokens?

18

Page 27: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

SECURITY TESTING

Test before you commit

Have you included private keys? Authentication tokens?

Static Application Security Testing (SAST)

According to one Sonatype study “of the 106 component ‘parts’ used in a typical application, on average 24 have known cyber vulnerabilities, which are rated either critical or severe."

18

Page 28: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

SECURITY TESTING

Test before you commit

Have you included private keys? Authentication tokens?

Static Application Security Testing (SAST)

According to one Sonatype study “of the 106 component ‘parts’ used in a typical application, on average 24 have known cyber vulnerabilities, which are rated either critical or severe."

Dynamic Application Security Testing (DAST)

Tools that run against your code are a good start, but they aren’t accessing the application like a user.

18

Page 29: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PERFORMANCE TESTING

19

https://en.wikipedia.org/wiki/Software_performance_testing

Page 30: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PERFORMANCE TESTING

Load testing

Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load.

19

https://en.wikipedia.org/wiki/Software_performance_testing

Page 31: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PERFORMANCE TESTING

Load testing

Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load.

Stress testing

Stress testing is normally used to understand the upper limits of capacity within the system.

19

https://en.wikipedia.org/wiki/Software_performance_testing

Page 32: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PERFORMANCE TESTING

Load testing

Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load.

Stress testing

Stress testing is normally used to understand the upper limits of capacity within the system.

Soak testing

Soak testing, also known as endurance testing, is usually done to determine if the system can sustain the continuous expected load.

19

https://en.wikipedia.org/wiki/Software_performance_testing

Page 33: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PERFORMANCE TESTING

Load testing

Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load.

Stress testing

Stress testing is normally used to understand the upper limits of capacity within the system.

Soak testing

Soak testing, also known as endurance testing, is usually done to determine if the system can sustain the continuous expected load.

Spike testing

Spike testing is done by suddenly increasing the load generated by a very large number of users, and observing the behavior of the system.

19

https://en.wikipedia.org/wiki/Software_performance_testing

Page 34: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINE STRATEGIES

Recommended practices

20

Page 35: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINE STRATEGIES

Recommended practices

20

Build (CI)

Page 36: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINE STRATEGIES

Recommended practices

20

Build (CI) Integrate

Page 37: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINE STRATEGIES

Recommended practices

20

Build (CI) Integrate Verify

Page 38: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

PIPELINE STRATEGIES

Recommended practices

20

Build (CI) Integrate Verify Deploy

Page 39: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

RUN AS MUCH AS POSSIBLE IN PARALLEL

21

UnitTest FunctionalTest

LoadTest

Staging Production

SpikeTest

StressTest

SoakTest

Page 40: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

MANAGING RISK

22

Page 41: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

DEPLOYMENT PATTERNS

23

Page 42: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

DEPLOYMENT PATTERNS

Canary release

A technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.

23

Page 43: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

DEPLOYMENT PATTERNS

Canary release

A technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.

Dark launching The practice of deploying the very first version of a service into its production environment, well before release, so that you can soak test it and find any bugs before you make its functionality available to users.

23

http://martinfowler.com/bliki/CanaryRelease.html

http://www.informit.com/articles/article.aspx?p=1833567&seqNum=2

Page 44: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEEDBACK LOOPS

24

Page 45: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEEDBACK LOOPS

Create useful logging for everything

24

Page 46: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEEDBACK LOOPS

Create useful logging for everythingRun (some of) your tests against production

24

Page 47: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

FEEDBACK LOOPS

Create useful logging for everythingRun (some of) your tests against production

Configure monitoring alerts to make sure people pay attention to them

24

Page 48: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

OPTIMIZE FOR RECOVERY

25

Page 49: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

OPTIMIZE FOR RECOVERY

Mean time between failures (MTBF) is the predicted elapsed time between inherent failures of a system during operation.

25

Page 50: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

OPTIMIZE FOR RECOVERY

Mean time between failures (MTBF) is the predicted elapsed time between inherent failures of a system during operation.

Mean Time To Repair (MTTR) is a basic measure of the maintainability of repairable items. It represents the average time required to repair a failed component or device.

25

https://en.wikipedia.org/wiki/Mean_time_to_repairhttps://en.wikipedia.org/wiki/Mean_time_between_failures

Page 51: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

SUMMARY

It’s not Continuous Delivery if you can’t deploy right now

Practice good CI habits

Use things like feature branches to deploy incomplete work

26

Page 52: IT’S NOT CONTINUOUS DELIVERY - QCon London 2020 · 2016-04-05 · Martin takes Continuous Integration mainstream TW takes the lead in creating CruiseControl 2004 Testing Tools:

THANK YOUTo learn more about ThoughtWorks CD Productshttp://www.thoughtworks.com/products/

27