Continuous delivery and the world of devops

Table of Contents

  1. Summary
  2. Introduction
    1. Audience
  3. What is continuous delivery?
  4. Trends driving continuous delivery
    1. Traditional businesses are under pressure
    2. Businesses want immediate value
    3. Businesses need timely feedback
    4. Businesses need to reduce risk
    5. Businesses need a transparent and accountable process
  5. What is devops?
    1. Technologies
    2. Configuration management
    3. Continuous integration
    4. Automated testing
    5. Metrics
    6. Collaboration
    7. Making smart use of smart people
    8. Who is devops?
  6. Constructing a continuous-delivery pipeline
    1. Version-control system
    2. Automated build system
    3. Package repository
    4. Continuous integration and delivery server
    5. Automated testing
  7. Infrastructure as code
    1. Managing the infrastructure
    2. Automation is essential
    3. Automation tools for infrastructure
    4. Opscode Chef
    5. Puppet Enterprise
    6. CFEngine
    7. Devops and ITIL
  8. Tips for success
  9. Ancestry.com: a case study
    1. Timeline
    2. The acid test
    3. Elements of the Ancestry.com process
    4. The results
  10. Key takeaways
  11. List of resources
    1. Release management
    2. Version control
    3. Automated builds
    4. Package repositories
    5. Continuous integration
    6. Testing platforms
    7. Infrastructure as code
    8. Books
  12. About Dave Ohara
  13. Temporary Report Title

1. Summary

The advent of online businesses has created new opportunities and fierce competition. Companies want to get their products and services to market as fast as they can, and releases that occur in periods of months or years are no longer competitive. As a result, the pattern of how to release software is changing from large, infrequent releases of new software to small releases that occur very frequently, as shown in Figure 1. The ultimate goal is the continuous delivery of software updates.

Figure 1. The changing pattern of software releases

 

This paper explains the world of continuous delivery and its underlying philosophy, devops. Continuous delivery is an automated pipeline constructed with various technologies that allows you to ensure that your code is always ready to be released. It does not mean that you have to release every change you implement: That is a business decision. It does mean that when you choose to release, your code is ready, fully functional, and fully tested.

In conjunction with the technology is the emerging devops methodology, which is an outgrowth of the agile movement. This movement stresses collaboration among groups that have often found themselves at odds, in particular development teams and operations teams. This increased level of collaboration blurs the boundaries between infrastructure and code. Looking at application code and infrastructure holistically rather than as separate disciplines and treating them the same in terms of automated delivery provides compelling benefits in terms of time to market and overall stability.

Full content available to GigaOm Subscribers.

Sign Up For Free