Continuous Delivery: Responding to Change Faster Than Ever Before - SDEC14

Post on 02-Jul-2015

153 views 0 download

description

Presentation given at SDEC14 in Winnipeg. The slides likely aren't very useful without the attending discussion but people have asked for the slides to be made available

Transcript of Continuous Delivery: Responding to Change Faster Than Ever Before - SDEC14

Continuous DeliveryResponding to change, faster than ever before Mike Bowler @mike_bowler

Thank you to our Sponsors

Media Sponsor:

2

“Continuous delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.”

Martin Fowler

3

“A key test is that a business sponsor could request that the current development version of the software can be deployed into production at a moments notice - and nobody would bat an eyelid, let alone panic.”

Martin Fowler

4

Why would we want to do that?

Agile manifesto says….

5

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”

How far can we push that?

6

• In 2011, Amazon was deploying to production every 11.6 seconds

• In 2013, Github deployed to production almost 11,000 times (About 42 times/business day)

• In 2013, Shopify deployed to production ~1,835 times (About 7 times/business day)

• Today, Etsy deploys 50+ times a day • Today, Netflix deploys “hundreds of times a

day”

“Wait a minute! My company doesn’t want to deploy that often!”

What’s important is that

What’s important is that

you CAN deliver that fast

8

How to make it work…

9

Extreme quality

Automate & Streamline

Feature flags

Monitoring & alertsWhole team

ContinuousDelivery

Digging deeper, we find….

10

Continuous

Delivery

Individuals

Courage

Pride of work

Design

Agile modeling

Evolutionary design

Simple design

Usability

Engaged people

Continuous improvement

Sustainable pace

Regular retrospectives

Executable specifications

ATDD

BDD

TDD

Exploratory testing

Functional

Performance

Incremental development

Pair programming

Refactoring

Dev Team

Configuration management

Version control

Frequent check-ins

Single codebase

Dependency managementCross-functional teams

High communication

Co-located teams

Daily standups

Shared understanding

Coding standards

Collective code ownership

Informational workspace

Simple architectureSmall Stories

Whole

Team

Automation

Continuous integrationDB migration

One click deploy

One click rollback

Zero downtime deploy

Configuration management

Provisioning

Cluster immune

system

Common Goal

Feature flags

Measurements

Comparative testing

Stress testing

MonitoringAlerts

Planning

Capacity

Compliance

Scalability

Rapid Feedback

© 2013 Gargoyle Software Inc

CD Pipeline

11

12

What about more complicated

environments?

13

HP does continuous delivery for printer drivers, including running tests against physical hardware.

APPLYING IT AT SCALE

14

“Each Facebook data center operations staffer can manage at least 20,000 servers, and for some admins the number can be as high as 26,000 systems”

— Delfina Eberly Director of Data Center Operations, FacebookNovember 2013

CD on the Mainframe

15

INTEGRATION AT GOOGLE SCALE

16

In 2010, Google had…

• 5000+ developers • 20+ changes per minute • 50% code base changes every month • 50 million automated tests run every day • Single branch, across five languages • Development on head; all releases from source • Each check-in isolated from all others http://google-engtools.blogspot.ca/2011/05/welcome-to-google-engineering-tools.html

Pull frommaster branch

Compile andPackage

Verify expectedbehaviour

Deploy toproduction

Monitoring and Alerts

Rollbacks on error

Production

Pull fromAmy’s branch

Compile andPackage

Verify expectedbehaviour

Deploy to production

Monitoring and Alerts

Rollbacks on error

Production

Merge with master branch

Compile and package

Verify expected behaviour

One branch per developer

Merge with local copy of master

Pull fromBob’s branch

Compile andPackage

Verify expectedbehaviour

Merge with local copy of master

Pull fromCarol’s branch

Compile andPackage

Verify expectedbehaviour

Merge with local copy of master

19

Extreme quality

Automate & Streamline

Feature flags

Monitoring & alertsWhole team

ContinuousDelivery

TOOLING

20

MORE READING

CONTACTING ME

Mike BowlerAgile & Technical Coach

mbowler@GargoyleSoftware.comCell: 905 409-7052

Twitter: @mike_bowler

Other links for me on Facebook, Google+ etc athttp://www.GargoyleSoftware.com/mike_bowler

HANDOUTS

Mike Bowler Agile & Technical Coach

(905) 409-7052mbowler@GargoyleSoftware.com

@mike_bowler

Pillars of Continuous Delivery 1) Extreme Quality 2) Automate & Streamline 3) Feature Flags 4) Monitoring & Alerts 5) Whole Team