An introduction to the concepts behind Continuous Delivery as well as an introduction to some of the tools available for implementing continuous delivery practices on a new project. This presentation is geared towards Java developers, but is applicable to all.
18. Agile Project 9 Customer & Team Customer & Team Customer & Team Requirements Requirements Requirements Test Test Test Development Development Development Operations Release Days! The Last Mile? Months!
19. 10 The Last Mile Manual Deployments Insufficient Configuration Management Infrequent, Error Prone Deployments
25. …a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently. 16 Continuous Delivery is…
26. “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” - First of the Twelve Principles behind the Agile Manifesto 17
37. 28 Continuous Integration Check-in Daily Commit to Trunk Automate the Build Keep the Build Fast Every Commit results in Build Test in Clone of Production Automate Deployment
38. 29 Recommended Practices Extreme Programming (XP) Fail a Build for Design Breaches Fail a Build for Slow Tests Fail a Build for Warnings & Code Style Breaches
44. 35 Automated Acceptance Tests Fast Feedback Reduce Tester workload Testers can do Exploratory Testing Regression Tests Requirements can be generated from Tests
45. Acceptance Test Approaches Acceptance Test Driven Development (ATDD) Behavior Driven Development (BDD) Given [some precondition] When [some event] Then [some result] 36
49. Scripting Approaches Script logs into each box and runs deployment script commands Script runs locally, each remote machine has agent execute script Package app using platform’s packaging technology, and use infrastructure management tools push new versions 40
54. Build Pipelines A Build Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users. 45
55. Synonyms Build Pipeline Deployment Pipeline Continuous Integration Pipeline Deployment Production Line Living Build 46
56. BuildPipelines A Chain of Jobs Early Jobs run Fast Every Check-in creates a new Pipeline When a Job Fails, the Pipeline fails Keep Code Production Ready 47
58. 49 Pipeline Practices Build Once, Deploy Many Deploy the Same Way to All Environments Smoke Test you Deployments Deploy into a Copy of Production Each Change should Propagate Instantly If any part fails, Stop the line
72. 63 Contact Me Mike McGarr mike.mcgarr@excella.com http://earlyandoften.wordpress.com @jmichaelmcgarr
Editor's Notes
Requirements/Design/Development Feedback Loop is months.So much can change in that timeFeedback Loop for Release is just as long.
Continuous delivery is a……set of practices and principles aimed at building, testing and releasing software faster and more frequently.
Collaboration (DEV + Customer, DEV + Operations)Talking early and often…break down walls. [DevOps]Automation. Automate Everything! Build, Test, Deploy!Frequency. Frequent means small. Easier to troubleshoot, rollback. Reduces Risk.Feedback. Change triggers feedback. Feedback is fast. Team acts on it.
Agile fixes the feedback loop problem for Requirements/Design/Development.Release Feedback is still months.
Collaboration (DEV + Customer, DEV + Operations)Talking early and often…break down walls. [DevOps]Automation. Automate Everything! Build, Test, Deploy!Frequency. Frequent means small. Easier to troubleshoot, rollback. Reduces Risk.Feedback. Change triggers feedback. Feedback is fast. Team acts on it.
The Last Mile tends to be an obstacle to achieving thisTransition – why are automated deployment so important? Because a feature doesn’t add value until it is in production.