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.
Unblocking The Main Thread Solving ANRs and Frozen Frames
Continuous Delivery in the real world - techniques to reduce the developers blood pressure
1. DEV2 -Continuous Delivery in the Real
World - Techniques to Reduce the
Developers Blood Pressure
Presented by Nikolai Blackie
Adaptiv Integration
9th of September 2012
4. Software Delivery Anti-Patterns
Deploying Software Manually
Deploying to a Production-like Environment Late
Manual Configuration Management of Production
Environments
5. Continuous Delivery Benefits
Empowering Teams
Reducing Errors
Lowering Stress
Deployment Flexibility
Practice Makes Perfect
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. Deployment Pipeline
Automated User
Delivery Team Version Control Build & Unit Tests
Acceptance Tests Acceptance Tests
Release
8. Delivery Pipeline
Source Control
Environment
Source Code
Configuration
Continuous Integration Server
Deploy & Test
Build & Unit Test
Package Release Package
Continuous Delivery Server
QA Initiated Ops Initiated
Deployment Deployment
Environments
Automated User
Staging/Production
Acceptance Test Acceptance Test
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. 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. 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. 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
15. Continuous Delivery Servers
Octopus Deploy
Team Foundation Server
ThoughtWorks Go
Urban{Code} uDeploy
Nolio Application Release Operations Suite
XebiaLabs Deployit