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?