Continuous Deployment - Open Agile Timisoara 2012

  • 1,930 views
Uploaded on

Continuous deployment is a process that allows companies to release software in minutes instead of days or weeks. All new code that is written for an application is immediately deployed in production …

Continuous deployment is a process that allows companies to release software in minutes instead of days or weeks. All new code that is written for an application is immediately deployed in production by using an automated pipeline. This technique can dramatically increase the amount of feedback you collect and give you the ability to adapt to unexpected events.

This process requires a great deal of discipline and can enhance software quality, by applying a rigorous set of standards to every change to prevent regressions, outages, or harm to key business metrics. During my presentation I will go through the main elements that make this possible, I will review some existing tools that you can use and tell you a few stories about small and large companies that implement continuous deployment.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,930
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
23
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. ContinuousDeployment Pipeline Andrei Savu @ OpenAgile Timisoara 2012
  • 2. Me• Founder of Axemblr.com• Bucharest Java User Group (bjug.ro)• Open Source Contributor• Connect with me on LinkedIn
  • 3. Overview• Agile & Lean Methodology• Build-Measure-Learn Loop• Implementation Steps• Success stories• Key points
  • 4. Q: How fast can you push a change in production? (hot-fix or security update)
  • 5. Agile & Lean• Release early, Release often• Maximise learning opportunities• Build the right thing• Client as critical component of the process
  • 6. Build-Measure-Learn Loop IDEAS LEARN BUILD DATA PRODUCT MEASURE
  • 7. Speed! Quality! Cost! IDEAS LEARN BUILD DATA PRODUCT MEASURE
  • 8. Continuous Deployment “All new code is automatically deployed in production by using an automated pipeline” Assumes: trunk always ready for release, one step deployment process, monitoring
  • 9. Implementation Steps Pipeline Components
  • 10. 0.Version Control• Code and *Infrastructure*• Choices: Git, SVN• Configuration: Puppet, Chef, CFEngine
  • 11. 1. CI Server• Continuous Integration Server• Backbone. Runs all tests. Gatekeeper.• Choices: Jenkins, BuildBot, TeamCity etc.• Start by adding tests for bugs• Keep the suite fast (10 - 30 minutes)
  • 12. 2. Commit Check• Version control with a hook that allows the server to refuse a commit• Enforce standards• “stop the line” role• Halt new changes on broken build
  • 13. 3. Simple Deployment• One step from a specific revision• Easy way to create a QA environment• Push button deployment to production• Leverage cloud computing technologies
  • 14. 4. Excellent Monitoring• Correlate w/ deployment & external events• Monitor business metrics• Monitor business processes• Smoke tests included
  • 15. 5. Root cause analysis• Faults will get in production• Understand why• Fix the process• Avoid blame
  • 16. Manual Done Trigger Review & Build & Deploy More DeployCommit Monitor Check Test Staging Tests Prod Rollback Fix Root Process Cause
  • 17. Success Stories
  • 18. IMVU• ~50 deploys per day in batches• 9 minutes per build across 30-40 build servers• Doing the impossible fifty times a day http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at- imvu-doing-the-impossible-fifty-times-a-day/
  • 19. Flickr• 10 deploys per day• “Lowering the risk of change through tools and culture” - DevOps• Feature flags & always ship trunk• Dev and Ops cooperation at Flickr http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops- cooperation-at-flickr
  • 20. Etsy• ~25 times per day• Faster cycles, Improve morale• “we don’t rollback, we fix the code”• “So simple, a VC can do it” - Pete Miron• Fred Wilson on Continuous Deployment http://www.avc.com/a_vc/2011/02/continuous-deployment.html
  • 21. Wordpress.com• ~16 releases per day (19 / 5 / 2010)• Optimize for perfection vs. speed• One step deploy to 400 machines (30s)• In praise of continuous deployment http://toni.org/2010/05/19/in-praise-of-continuous-deployment-the- wordpress-com-story/
  • 22. Facebook• 1-2 push per day - 1 large per week• 1B monthly active users• Culture, Tools, IRC• Pushing Millions of Lines of Code Five Days a Week https://www.facebook.com/video/video.php? v=10100259101684977&oid=9445547199
  • 23. Key Points• Not rocket science!• A release should be a non-event• Build quality in the development process• Partial implementations can bring a lot of value
  • 24. Thanks!Andrei Savu / asavu@axemblr.com Twitter: @andreisavu
  • 25. Resources #1• Continuous Integration step by step http://www.startuplessonslearned.com/2008/12/continuous-integration-step- by-step.html• Five Whys http://www.startuplessonslearned.com/2008/11/five-whys.html• Anatomy of the Deployment Pipeline http://www.informit.com/articles/article.aspx?p=1621865• Building for the Cloud @ Netflix http://www.infoq.com/presentations/Building-for-the-Cloud-at-Netflix
  • 26. Resources #2• 10 deploys per day @ Flickr http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops- cooperation-at-flickr• John Allspaw blog http://www.kitchensoap.com/• Jez Humble: Continuous Delivery http://www.slideshare.net/jezhumble/continuous-delivery-5359386• Deploying at Github https://github.com/blog/1241-deploying-at-github
  • 27. Resource #3• How Facebook Does Deployment http://java.dzone.com/articles/how-facebook-does-deployment• Asgard: Web-based Cloud Management and Deployment http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management- and.html• Chaos Monkey Released Into The Wild http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
  • 28. Resource #4• Keeping Movies Running Amid Thunderstorms! http://www.slideshare.net/r39132/keeping-movies-running-amid- thunderstorms• LinkedIn Glu http://linkedin.github.com/glu/docs/latest/html/index.html• Measure Everything @ Etsy http://codeascraft.etsy.com/2011/02/15/measure-anything-measure- everything/
  • 29. Questions?Andrei Savu / asavu@axemblr.com Twitter: @andreisavu