Top Banner
The Quest for Continuous Delivery at Pluralsight Mike Clement @mdclement [email protected] http://blog.softwareontheside.com
72

The Quest for Continuous Delivery at Pluralsight

Jul 15, 2015

Download

Software

Michael Clement
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Quest for Continuous Delivery at Pluralsight

The Quest for Continuous Delivery at Pluralsight

Mike Clement

@mdclement

[email protected]

http://blog.softwareontheside.com

Page 2: The Quest for Continuous Delivery at Pluralsight

Overview of CD

Pluralsight today

The future

Page 3: The Quest for Continuous Delivery at Pluralsight
Page 4: The Quest for Continuous Delivery at Pluralsight
Page 5: The Quest for Continuous Delivery at Pluralsight
Page 6: The Quest for Continuous Delivery at Pluralsight

If somebody thinks of a good idea…

Page 7: The Quest for Continuous Delivery at Pluralsight

…how do we deliver it to users as quickly as possible?

Continuous Delivery, Introduction

Page 8: The Quest for Continuous Delivery at Pluralsight
Page 9: The Quest for Continuous Delivery at Pluralsight

Done?

Page 10: The Quest for Continuous Delivery at Pluralsight

Done is released

Page 11: The Quest for Continuous Delivery at Pluralsight

Deployment

Provisioning and managing the environment in which your application will run (hardware configuration, software, infrastructure, and external services).

Installing the correct version of your application into it.

Configuring your application, including any data or state it requires.

Continuous Delivery, Chapter 1

Page 12: The Quest for Continuous Delivery at Pluralsight
Page 13: The Quest for Continuous Delivery at Pluralsight
Page 14: The Quest for Continuous Delivery at Pluralsight

Who?

Page 15: The Quest for Continuous Delivery at Pluralsight

Delivery Team

Product

Testers

Build

Ops

Support

Developers

Page 16: The Quest for Continuous Delivery at Pluralsight

What?

Page 17: The Quest for Continuous Delivery at Pluralsight

Managing Risk

Small releases

Automated tests

Visible

Repeatable

Reliable

Predictable

Page 18: The Quest for Continuous Delivery at Pluralsight

Why?

Page 19: The Quest for Continuous Delivery at Pluralsight

Reducing Errors

Lowering Stress

Deployment Flexibility

Page 20: The Quest for Continuous Delivery at Pluralsight

How?

Page 21: The Quest for Continuous Delivery at Pluralsight

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data

Page 22: The Quest for Continuous Delivery at Pluralsight

https://www.chef.io/images/chart-continuous-delivery.png

Page 23: The Quest for Continuous Delivery at Pluralsight
Page 24: The Quest for Continuous Delivery at Pluralsight

Version control everything that can change

configuration files

scripts to create databases and their schemas

build scripts

test harnesses

development environments

operating system configurations

Page 25: The Quest for Continuous Delivery at Pluralsight

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

• “Non-functional” tests (capacity, security, availability)

• UI tests

Page 26: The Quest for Continuous Delivery at Pluralsight
Page 27: The Quest for Continuous Delivery at Pluralsight

Practices at Pluralsight

Page 28: The Quest for Continuous Delivery at Pluralsight

Technology Stack

.NET (C#)

Angular JS

RavenDB

Homegrown XML based DB

IIS/Windows

Windows Services

Page 29: The Quest for Continuous Delivery at Pluralsight

XP Simple Design

Passes all tests

Clear, expressive, consistent

No duplication

Minimal

Page 30: The Quest for Continuous Delivery at Pluralsight

Pair Programming

Page 31: The Quest for Continuous Delivery at Pluralsight
Page 32: The Quest for Continuous Delivery at Pluralsight
Page 33: The Quest for Continuous Delivery at Pluralsight
Page 34: The Quest for Continuous Delivery at Pluralsight

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

• “Non-functional” tests (capacity, security, availability)

• UI tests

Page 35: The Quest for Continuous Delivery at Pluralsight

Tools at Pluralsight

Page 36: The Quest for Continuous Delivery at Pluralsight

mSpec

Page 37: The Quest for Continuous Delivery at Pluralsight
Page 38: The Quest for Continuous Delivery at Pluralsight
Page 39: The Quest for Continuous Delivery at Pluralsight
Page 40: The Quest for Continuous Delivery at Pluralsight
Page 41: The Quest for Continuous Delivery at Pluralsight

Feedback Process – TeamCity

• Build

• Unit tests

• Acceptance tests

• UI tests

Page 42: The Quest for Continuous Delivery at Pluralsight

Site Management tool

Page 43: The Quest for Continuous Delivery at Pluralsight
Page 44: The Quest for Continuous Delivery at Pluralsight
Page 45: The Quest for Continuous Delivery at Pluralsight

Octopus

• Variables – application configuration

• Web.config transforms

• NuGet package with application

• Before/after scripting

Page 46: The Quest for Continuous Delivery at Pluralsight
Page 47: The Quest for Continuous Delivery at Pluralsight

Hosted ViaWest

• “Private” Cloud

• Commodity virtual hardware

• Moving to…

Page 48: The Quest for Continuous Delivery at Pluralsight
Page 49: The Quest for Continuous Delivery at Pluralsight

AWS (EC2)

• Commodity hardware

• Ops configured

Page 50: The Quest for Continuous Delivery at Pluralsight
Page 51: The Quest for Continuous Delivery at Pluralsight
Page 52: The Quest for Continuous Delivery at Pluralsight
Page 53: The Quest for Continuous Delivery at Pluralsight
Page 54: The Quest for Continuous Delivery at Pluralsight

Where are we going next?

Page 55: The Quest for Continuous Delivery at Pluralsight

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data?

Page 56: The Quest for Continuous Delivery at Pluralsight
Page 57: The Quest for Continuous Delivery at Pluralsight
Page 58: The Quest for Continuous Delivery at Pluralsight

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data

Page 59: The Quest for Continuous Delivery at Pluralsight
Page 60: The Quest for Continuous Delivery at Pluralsight

{"Title": "AngularJS Fundamentals","ShortDescription": "This course will teach you the AngularJS fundamentals required to create testable, MVC-style single page

applications with AngularJS.","Description": "In this course you will learn how simple it is to use AngularJS to create maintainable and testable single page

applications. You will learn how to: bootstrap your AngularJS application; use AngularJS markup and expressions; create and use controllers; use built-in services and create custom services; turn your application into a SPA using routing; and create your own custom elements and handle events using directives. You will also learn how AngularJS allows you to do all thing using test-driven-development.",

"PublishedOn": "2013-05-17T00:00:00.0000000","ShowTranscripts": true,"Level": "Intermediate","RecentViewTime": 9542531,"Subcategory": "","MaterialsFilePublishDateUtc": "2014-04-11T12:34:15.0000000","TotalRating": 7861,"TotalNumberOfRaters": 1775,"AllowAnonymousExerciseFiles": false,"AllowFreeAssessments": false,"Name": "angularjs-fundamentals","Category": {

"CategoryName": "javascript","CategoryTitle": "JavaScript"

},"Duration": 22918,"ModuleRefs": ["coursemoduledtos/joe-eames/angularjs-fundamentals-m1-intro","coursemoduledtos/joe-eames/angularjs-fundamentals-m2-markup-controllers","coursemoduledtos/jim-cooper/angularjs-fundamentals-m3-services","coursemoduledtos/jim-cooper/angularjs-fundamentals-m4-routing","coursemoduledtos/jim-cooper/angularjs-fundamentals-m5-directives","coursemoduledtos/joe-eames/angularjs-fundamentals-m6-testing"

]}

Page 61: The Quest for Continuous Delivery at Pluralsight
Page 62: The Quest for Continuous Delivery at Pluralsight
Page 63: The Quest for Continuous Delivery at Pluralsight

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

• “Non-functional” tests (capacity, security, availability)

• UI tests

Page 64: The Quest for Continuous Delivery at Pluralsight

Immediate Future

• Server Management as Code• More saltstack• Salt pillars with application code

• Raven to Cassandra• automate modifications to database schema in Cassandra

• Better staging environment

• SOX• Automation over Documentation• Enforcing Traceability• Change Management

• Better live testing/monitoring – New Relic

Page 65: The Quest for Continuous Delivery at Pluralsight

A little further out…

• Automated performance testing on stage on every build

• Automated security testing on stage on every build

• Continual automated performance testing on live

• Continual automated security testing on live

• Immutable infrastructure

• Continuous Deployment/Release?

Page 66: The Quest for Continuous Delivery at Pluralsight
Page 67: The Quest for Continuous Delivery at Pluralsight
Page 68: The Quest for Continuous Delivery at Pluralsight
Page 69: The Quest for Continuous Delivery at Pluralsight
Page 70: The Quest for Continuous Delivery at Pluralsight
Page 71: The Quest for Continuous Delivery at Pluralsight

Resources

• Jez Humble - http://continuousdelivery.com/

• Gene Kim - http://www.realgenekim.me/

• Kevin Behr - http://www.kevinbehr.com/

Page 72: The Quest for Continuous Delivery at Pluralsight

Mike Clement

• @mdclement

[email protected]

• http://blog.softwareontheside.com

• http://agilecodegames.com

• https://github.com/mdclement

• Utah Software Craftsmanship• http://utahsc.org• @utahsc• We meet the first Wednesday at Pluralsight-Lehi

• http://agileroots.com