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.
2. What is it?
It is the culture of updating production
software 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.
9. Ownership
• Developers roll code to production
• Developers have access to production
servers and production data
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. 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.
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. 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.
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. 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. 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. 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. 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. People Smarter Than Me
• John Allspaw (Etsy, formerly Flickr)
• http://slidesha.re/jaetsy
• http://bit.ly/10deploys
• Theo Schlossnagle (OmniTI)
• http://bit.ly/tsopscareer
24. Continuous
Deployment
Brian Moon
dealnews.com
@brianlmoon
http://brian.moonspot.net/