the quest for continuous delivery at pluralsight
TRANSCRIPT
The Quest for Continuous Delivery at Pluralsight
Mike Clement
@mdclement
http://blog.softwareontheside.com
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
Every change that is made to…
…triggers the pipeline.
Continuous Delivery, Introduction
configuration
source code
environment
data
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
Feedback Process
• Build
• Unit tests
• Coverage/static analysis
• Acceptance tests
• “Non-functional” tests (capacity, security, availability)
• UI tests
Octopus
• Variables – application configuration
• Web.config transforms
• NuGet package with application
• Before/after scripting
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
• 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