the quest for continuous delivery at pluralsight

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

Upload: michael-clement

Post on 15-Jul-2015

302 views

Category:

Software


0 download

TRANSCRIPT

The Quest for Continuous Delivery at Pluralsight

Mike Clement

@mdclement

[email protected]

http://blog.softwareontheside.com

Overview of CD

Pluralsight today

The future

If somebody thinks of a good idea…

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

Continuous Delivery, Introduction

Done?

Done is released

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

Who?

Delivery Team

Product

Testers

Build

Ops

Support

Developers

What?

Managing Risk

Small releases

Automated tests

Visible

Repeatable

Reliable

Predictable

Why?

Reducing Errors

Lowering Stress

Deployment Flexibility

How?

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data

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

Version control everything that can change

configuration files

scripts to create databases and their schemas

build scripts

test harnesses

development environments

operating system configurations

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

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

• UI tests

Practices at Pluralsight

Technology Stack

.NET (C#)

Angular JS

RavenDB

Homegrown XML based DB

IIS/Windows

Windows Services

XP Simple Design

Passes all tests

Clear, expressive, consistent

No duplication

Minimal

Pair Programming

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

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

• UI tests

Tools at Pluralsight

mSpec

Feedback Process – TeamCity

• Build

• Unit tests

• Acceptance tests

• UI tests

Site Management tool

Octopus

• Variables – application configuration

• Web.config transforms

• NuGet package with application

• Before/after scripting

Hosted ViaWest

• “Private” Cloud

• Commodity virtual hardware

• Moving to…

AWS (EC2)

• Commodity hardware

• Ops configured

Where are we going next?

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data?

Every change that is made to…

…triggers the pipeline.

Continuous Delivery, Introduction

configuration

source code

environment

data

{"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"

]}

Feedback Process

• Build

• Unit tests

• Coverage/static analysis

• Acceptance tests

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

• UI tests

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

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?

Resources

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

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

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

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