Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Quest for Continuous Delivery at Pluralsight

2,015 views

Published on

Continuous integration, continuous delivery, continuous deployment. These may seem like unreachable goals in your current situation. Maybe you’re doing weekly or even monthly coordinated releases. At Pluralsight we deploy multiple times a week, sometimes multiple times a day. We’re not perfect and we’re constantly working to improve our system, but I’ll share an experience report of where we currently are and where we’re going.

Published in: Software
  • Be the first to comment

  • Be the first to like this

The Quest for Continuous Delivery at Pluralsight

  1. 1. The Quest for Continuous Delivery at Pluralsight Mike Clement @mdclement mike@softwareontheside.com http://blog.softwareontheside.com
  2. 2. Overview of CD Pluralsight today The future
  3. 3. If somebody thinks of a good idea…
  4. 4. …how do we deliver it to users as quickly as possible? Continuous Delivery, Introduction
  5. 5. Done?
  6. 6. Done is released
  7. 7. 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
  8. 8. Who?
  9. 9. Delivery Team Product Testers Build Ops Support Developers
  10. 10. What?
  11. 11. Managing Risk Small releases Automated tests Visible Repeatable Reliable Predictable
  12. 12. Why?
  13. 13. Reducing Errors Lowering Stress Deployment Flexibility
  14. 14. How?
  15. 15. Every change that is made to… …triggers the pipeline. Continuous Delivery, Introduction configuration source code environment data
  16. 16. https://www.chef.io/images/chart-continuous-delivery.png
  17. 17. Version control everything that can change configuration files scripts to create databases and their schemas build scripts test harnesses development environments operating system configurations
  18. 18. Feedback Process • Build • Unit tests • Coverage/static analysis • Acceptance tests • “Non-functional” tests (capacity, security, availability) • UI tests
  19. 19. Practices at Pluralsight
  20. 20. Technology Stack .NET (C#) Angular JS RavenDB Homegrown XML based DB IIS/Windows Windows Services
  21. 21. XP Simple Design Passes all tests Clear, expressive, consistent No duplication Minimal
  22. 22. Pair Programming
  23. 23. Feedback Process • Build • Unit tests • Coverage/static analysis • Acceptance tests • “Non-functional” tests (capacity, security, availability) • UI tests
  24. 24. Tools at Pluralsight
  25. 25. mSpec
  26. 26. Feedback Process – TeamCity • Build • Unit tests • Acceptance tests • UI tests
  27. 27. Site Management tool
  28. 28. Octopus • Variables – application configuration • Web.config transforms • NuGet package with application • Before/after scripting
  29. 29. Hosted ViaWest • “Private” Cloud • Commodity virtual hardware • Moving to…
  30. 30. AWS (EC2) • Commodity hardware • Ops configured
  31. 31. Where are we going next?
  32. 32. Every change that is made to… …triggers the pipeline. Continuous Delivery, Introduction configuration source code environment data?
  33. 33. Every change that is made to… …triggers the pipeline. Continuous Delivery, Introduction configuration source code environment data
  34. 34. { "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" ] }
  35. 35. Feedback Process • Build • Unit tests • Coverage/static analysis • Acceptance tests • “Non-functional” tests (capacity, security, availability) • UI tests
  36. 36. 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
  37. 37. 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?
  38. 38. Resources • Jez Humble - http://continuousdelivery.com/ • Gene Kim - http://www.realgenekim.me/ • Kevin Behr - http://www.kevinbehr.com/
  39. 39. Mike Clement • @mdclement • mike@softwareontheside.com • 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

×