Continuous Deployment JEFFREY KNAPP 8/6/14
Introduction Why is it valuable How to achieve What to consider
Why? - Value To the end client ◦Rapid delivery, less time from idea to production To the company ◦Less software inventory ◦Consistent deployment process To the team ◦Less effort to deploy ◦More frequent system testing feedback
Why? - Consistency Consistent process Consistent testing Reproducibility
Why? - Quality Testing strategy and design are taken into account up front Consistent testing methods and execution Quality checks in deployment process ensure quality releases
Implementation – Continuous Integration SourceControlReady to Run Ready for ProductionInProduction
Implementation – Continuous Delivery SourceControlReady to Run Ready for ProductionInProduction
Implementation – Continuous Deployment SourceControlReady to Run Ready for ProductionInProduction
Implementation – Building a Deployment Pipeline Pros ◦Efficient ◦Easy to implement ◦Quick to deploy Cons ◦Low confidence level ◦Inconsistent quality Source Control Production
Implementation - Testing Benefits ◦Confidence ◦Consistent quality Types ◦Unit ◦Integration ◦Acceptance
Implementation – Building a Deployment Pipeline Pros ◦Higher confidence level ◦Consistent quality Cons ◦More difficult to implement ◦Takes longer to deploy Source Control Unit Tests Integration Tests Acceptance Tests Production
Implementation – Deployment Pipeline
Implementation – Putting it all together Continuous Integration Continuous Delivery Continuous Deployment
Considerations Business considerations between delivery and deployment ◦Up to engineering to achieve continuous delivery ◦Continuous deployment may be affected by business processes ◦Segregated networks ◦Controlled release dates
Considerations Amount of testing (Time vs. Confidence) ◦Generally, higher confidence requires more testing which requires more time to implement and deployment process takes longer ◦How much confidence is required? ◦Defined by the team ◦Defined by the company ◦Defined by the client ◦Defined by the market
Considerations Automated vs. manual testing ◦Anything repetitive should be automated ◦Humans are poor at repetitive tasks ◦Computers are good at repetitive tasks ◦More efficient ◦QA can focus on designing tests and implementing automated testing (which is an investment with an ROI that increases over time) ◦Manual testing does not scale well
Considerations Single tenant vs. multi tenant systems ◦Single tenant = one production environment per client ◦Multi tenant = one production environment for all clients ◦Don’t forget about demo and sales environments
Conclusion By implementing continuous deployment, value can be delivered to the client quicker, more consistently, and with higher quality.
Q&A