Continuous Delivery in the real world - techniques to reduce the developers blood pressure

1,750 views
1,575 views

Published on

Do you suffer from elevated stress and high blood pressure from your current software release cycles? Lost count of the 2am troubleshooting sessions trying to working out why production didn’t deploy like test? In this session you will see real life continuous delivery strategies from the field, learn some implementation techniques and demonstrations of a few tools that will assist in reducing the headache of manual software delivery.

Published in: Technology

Continuous Delivery in the real world - techniques to reduce the developers blood pressure

  1. 1. DEV2 -Continuous Delivery in the RealWorld - Techniques to Reduce theDevelopers Blood PressurePresented by Nikolai BlackieAdaptiv Integration9th of September 2012
  2. 2. My First Unit Test – 28th October 2003
  3. 3. Agenda Continuous Delivery Deployment Pipelines Configuration Management Deployment Scripting Octopus Deploy
  4. 4. Software Delivery Anti-Patterns Deploying Software Manually Deploying to a Production-like Environment Late Manual Configuration Management of Production Environments
  5. 5. Continuous Delivery Benefits Empowering Teams Reducing Errors Lowering Stress Deployment Flexibility Practice Makes Perfect
  6. 6. Principles of Software Delivery Repeatable, Reliable Process for Releasing Software Automate Almost Everything If It Hurts, Do It More, Bring the Pain Forward Build Quality In Everybody Is Responsible for the Delivery Process Continuous Improvement
  7. 7. Deployment Pipeline Automated User Delivery Team Version Control Build & Unit Tests Acceptance Tests Acceptance Tests Release
  8. 8. Delivery Pipeline Source Control Environment Source Code Configuration Continuous Integration Server Deploy & Test Build & Unit Test Package Release PackageContinuous Delivery Server QA Initiated Ops Initiated Deployment DeploymentEnvironments Automated User Staging/Production Acceptance Test Acceptance Test
  9. 9. Deployment Pipeline Best Practices Only Build Your Binaries Once Deploy the Same Way to Every Environment Smoke-Test Your Deployments Deploy into a Copy of Production Each Change Should Propagate Instantly If Any Part of the Pipeline Fails, Stop the Line
  10. 10. Configuration Management Keep Absolutely Everything in Version Control • Dependent frameworks & components • 3rd Party Binaries • All configuration Application Configuration • Application configuration created at deploy time • Use a template and environment specific settings Deployment Configuration • Configuration for deployment activities derived at deploy time • E.g. Host credentials for AppPools
  11. 11. Deployment Scripting Use a deployment script per application package Use an Appropriate Technology to Deploy Your Application Use the Same Scripts to Deploy to Every Environment Evolve Your Deployment System Incrementally Tips • Always Use Relative Paths • Eliminate Manual Steps • Constrain Your Application with Integrated Smoke Tests
  12. 12. PowerShell Deployment Scripting Use certificates to enforce security Use Deploy Orchestrators • PreDeploy.ps1 • Deploy.ps1 • PostDeploy.ps1 • DeployFailed.ps1 Create Common PowerShell Modules • BizTalk • IIS • MSMQ • SQL • Windows Services
  13. 13. Octopus Deploy NuGet Package CI 2 Octopus Server Package Release NuGet Package NuGet 1 Package 3 Package Step 1 Package Step 2 Package Step 3 Octopus Tentacle Octopus Tentacle Octopus Tentacle UAT Staging Production
  14. 14. Continuous Delivery Servers Octopus Deploy Team Foundation Server ThoughtWorks Go Urban{Code} uDeploy Nolio Application Release Operations Suite XebiaLabs Deployit
  15. 15. Code Camp Sponsors
  16. 16. Questions?

×