Continuous Delivery good & bad 4/20/2012 Kathleen Barrera CS577b Spring 2012
Overview What is Continuous Delivery How to do it well Scenario Definition How to do it well Where it can fail Conclusion Q&A
Imagine … You are the project manager for the Virgin America booking system Critical bug on phone app is incorrectly charging flights as $1000 instead of $100!!! New feature that sends ticket coupons to anyone who tweets #virginamerica25coupon to compete with JetBlue
But … Your software release process is PAINFUL and SLOW LOTS of integration bugs Bugs in production cannot be reproduced in development
RELIABLE Continuous Delivery Software release needs to FAST and PAINLESS and.. RELIABLE
Continuous Delivery “.. effective pattern for getting software [from] development to release” – 2010, Continuous Delivery, Farley & Humble
Related Concepts Continuous Integration Test Driven Development Test Automation …
How ? Development Continuous integration – integrate early and often Keep builds fast Build tests in
How ? Development Version Control Branch when necessary Follow good configuration management practices Manage Dependencies well (SOA, loosley coupled)
How ? Testing Automated testing Everyone owns the testing suite!
How ? Scripted build & deployment Overnight builds Push button deployment Eliminate manual steps
But … Instant deployment does not happen instantly Need to refactor current deployment pipeline May need to procure tools / hardware / training ROI may be slow and gradual
But … Introduce more risk Or … Users don’t want features! Release too much instead of incrementally Difficult to discover what broke what Or … Users don’t want features!
Conclusion Continuous Delivery driven by BUSINESS Goal/Question/Metric? Continuous Delivery is owned by everyone on the team Not one person’s job! Continuous Delivery relies on collaboration at every stage and feedback and starts early in the development lifecycle
Questions and Discussion