Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous Deployment


Published on

The Web moves fast, really fast. No one talks about what version of a web site you are using. Maybe you are using the beta version. Even then, it is always new. The Web is obsessed with new. It thrives on new. To meet this demand, in the early years of the web, teams learned a new way to deploy their software. Rather than the traditional models used by compiled, installed software, these pioneers on the Internet deployed software when it was ready. That meant Web sites could be responsive to changes, fix bugs quickly, and add new features to compete with the market. This method is still alive today. Successful web companies still do this to keep their advantage. While there are no set rules, there are good examples of what others do and how it helps them be successful.

Published in: Technology
  • Be the first to comment

Continuous Deployment

  1. 1. ContinuousDeployment Brian Moon @brianlmoon
  2. 2. What is it? It is the culture of updating productionsoftware when individual new features or bug fixes are ready for production.The process will be different from one shop to another, but the culture is where it counts.
  3. 3. Production Code Updates per Day Q11510 5 0 1/1 1/4 1/7 1/10 1/13 1/16 1/19 1/22 1/25 1/28 1/31 2/3 2/6 2/9 2/12 2/15 2/18 2/21 2/24 2/27 3/1 3/4 3/7 3/10 3/13 3/16 3/19 3/22 3/25 Production Puppet Updates per Day Q110 8 6 Also made 43 SQL Schema changes 4 2 0 1/1 1/4 1/7 1/10 1/13 1/16 1/19 1/22 1/25 1/28 1/31 2/3 2/6 2/9 2/12 2/15 2/18 2/21 2/24 2/27 3/1 3/4 3/7 3/10 3/13 3/16 3/19 3/22 3/25
  4. 4. Who Does This?• Facebook• Amazon• Twitter• Etsy• Flickr
  5. 5. What is it not?• Nightly Builds - nightly builds are not always ready• Cowboy Development - rolling code for the sake of rolling code
  6. 6. Continuous DeploymentContinuous Integration (CI) Version Control
  7. 7. Developer Developer Developer Trunk CI of all developer code Staging CI with production code Production
  8. 8. Benefits
  9. 9. Ownership• Developers roll code to production• Developers have access to production servers and production data
  10. 10. Agility• When bugs to occur, it is much quicker to identify what might have caused it.• When new business requirements arise, time to implementation is greatly reduced.
  11. 11. Real Example• 11:45:47 AM - Editor reports a bug in a critical tool• 11:51:29 AM - Senior developer analyzes logs, sees the bad data• 14:18:14 PM - Developer merges changes into trunk. Begins testing on staging.• 14:35:21 PM - Developer rolls fix. It is live and working.
  12. 12. Visual Example
  13. 13. ProcessWill vary, do what works for you.
  14. 14. Development• Developers work in their own branch• They merge changes into trunk when they are working
  15. 15. Testing• Code is merged from trunk into a production checkout on staging• QA testing and unit testing is performed there by the developer or via peer review• When it is determined ready, it is committed to production branch
  16. 16. Deployment• The developer responsible for the change logs in to a production server using a limited privilege user and updates the code via a script.• This central server updates all production servers with the new code as needed.• The developer then does a second pass of testing on production as needed.
  17. 17. Monitoring• Graph Everything™ and alert on anomalies• Tools: • Graphite • Cacti/Ganglia • Circonus/Reconnoiter • Loggly/HopToad • Nagios • Keynote/AlertSite/Gomez
  18. 18. Examples• We send PHP Error counts to Circonus. It alerts us when more than 1/5/10 per second occur, escalating as needed• Nagios monitors load averages of Apache servers and alerts when it is too high• AlertSite monitors our page load times every 15 minutes from 30 locations and alerts when it slows down
  19. 19. Projects• Critical people (marketing, management, etc.) as well as a senior developer discuss the project• Once the big picture is clear, senior developers break down the work into discrete tasks• Tasks are completed and rolled as they are ready, not waiting on all parts to be done.
  20. 20. Real Example• For SEO purposes, we wanted content that had expired to redirect to a page of similar content rather than living forever as an expired article. But, only for certain categories of content.
  21. 21. Discrete Tasks• Update the category maintenance tools, adding a flag for this behavior• Change the code that updates our front end databases, adding this flag• Change the code that generates a page to consider this new flag
  22. 22. Summary• It is a culture, not a strict process• However, there are common processes that can be copied• Give people ownership and they will flourish• Monitor after deployment
  23. 23. People Smarter Than Me• John Allspaw (Etsy, formerly Flickr) • •• Theo Schlossnagle (OmniTI) •
  24. 24. ContinuousDeployment Brian Moon @brianlmoon