Continuous Delivery Without Breaking Everything

Preview:

Citation preview

Continuous Delivery Without Breaking Everything

James Andrew Vaughn (Andy) @MindTouch

James Andrew Vaughn (Andy)

• Software Engineer at MindTouch• @modethirteen on Twitter & GitHub• Professional Interests aside from Continuous

Delivery• Frontend Web Performance & RUM• Web components (Polymer)• JavaScript & CSS Pre-processing and Build

Automation• SSO and Identity Management• Scala

Not Sure What This Session Is About?

ReleaseTestBuild

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

2006

2010

2011

2012

2013

2014

Cloud Infrastructure Development

Begins

MindTouch On Premise Initial

Release

Tremors of Continuous

Delivery

Manual Cloud Releases

Quality and Testing Catch Up

Releases Become Invisible

On Premise Cloud Enlightenment

V1 V2 V3 V4 V5

On-PremiseRelease Cycle

V6 V7

ReleaseTestBuild

On-Premise

On-PremiseBuild: Development

Environments

Image: https://www.flickr.com/photos/kalimistuk/5222488195/in/set-72157594487294945

On-PremiseBuild: Version Control

On-PremiseBuild: Continuous Integration

ReleaseTestBuild

On-Premise

ReleaseTestBuild

On-Premise

On-PremiseRelease: Packaging

Release: Supported PlatformsOn-Premise

On-PremiseRelease: Pre-Release Testing

On-PremiseRelease: Deploy

On-PremiseLost Time, Lost Opportunities

CloudRelease Cycle

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10

Release Cycle

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10

On Premise vs Cloud

V1 V2 V3 V4 V5 V6 V7

ReleaseTestBuild

Cloud

CloudBuild: Development

Environments

Image: https://www.flickr.com/photos/kalimistuk/5222488195/in/set-72157594487294945

CloudBuild: Version Control

CloudBuild: Continuous Integration

ReleaseTestBuild

Cloud

CloudTest: Staging Environments

Image: https://www.flickr.com/photos/kalimistuk/5222488195/in/set-72157594487294945

ReleaseTestBuild

Cloud

CloudRelease: Packaging

CloudRelease: Pre-Release Testing

CloudRelease: Deploy

CloudRelease: Deploy

CloudRelease: The Golden Image

+ boto: A Python Interface toAmazon Web Services

V1 V2 V3 V2 V3 V4 V5 V6 V5 V6 V7 V8 V7 V8

CloudReleasing MindTouch

V3 Rolled Back

Release +Same Day Hot Fix

OMG Hot Fix BrokeSomething Else, Just

Roll Back To V7

V6 Rolled Back

ReleaseTestBuild

Enlightenment

EnlightenmentBuild: Development

Environments

+

EnlightenmentBuild: Continuous Integration

++

++

Close ticket associatedwith pull request

ReleaseTestBuild

Enlightenment

EnlightenmentTest: Automation

EnlightenmentTest: Behavior Driven

Specifications

+

Feature: User Login In order to contribute to MindTouch As an anonymous user I need to be able to log in to MindTouch

Background: Given I am on the homepage

Scenario: Log in to MindTouch via Quick Login widget When I follow "Sign In" Then I should see a "#quick-login" element When I fill in "username" with {{username}} And I fill in "password" with {{password}} And I click on the element "form#quick-login .btn" Then I should be logged in

Scenario: Log in to MindTouch via User Login page When I go to "/UserLogin" Then I should be on "/UserLogin" When I fill in "text-username" with {{username}} And I fill in "password-password" with {{password}} And I press "login" Then I should be logged in

EnlightenmentTest: Staging Environments

+ boto: A Python Interface toAmazon Web Services

EnlightenmentTest: Provide Automated Testing Feedback To

Developers

ReleaseTestBuild

Enlightenment

EnlightenmentRelease: What’s Left?

EnlightenmentEveryone Has Bought Into Continuous Delivery

(Even If They Don’t Know It)

Image: https://www.flickr.com/photos/29844928@N07/4368522936/

EnlightenmentThe DevOps Engineer Who Wasn’t

There

ReleaseTestBuild

What’s Next?

The End. Q?

Recommended