Red Hat
Aug 19, 2014
by Thomas Qvarnström

Wikipedia definition of Continuous Delivery reads:
"Continuous Delivery (CD) is a design practice used in software development to automate and improve the process of software delivery. Techniques such as automated testing, continuous integration and continuous deployment allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead."[1]

In a webinar series around DevOps and Java EE I repeatedly described how I see practices like CI and CD relates to DevOps. I've used the picture below to illustrate how they relate.
The first thing to notice from the picture is that the more mature an organization are in adopting agile practices the more strategical impact it will have. While Continuous Development (or Agile development) will improve the possibility for a development team to deliver solutions the rest of the organization are still to much of a bottleneck. The result is that many organization will do 2,3 or even 4 sprints[2] of development before releasing into production, causing releases to big and complex with thousands of changes etc.

In order for companies to mature into CI and CD the rest of the organization such as test teams, ops team have to adopt agile practices, but many organizations are struggling to do this and I personally believes that the issue that many organizations face in moving to CD are that development and operations are today divided. Often operations or development departments are outsourced to external organization or simple divided to give the CIO possibility to in the future outsource it. As a result development and operations have different goals and different processes to achieve these goals. DevOps takes an alternative approach where everyone involved in delivering solutions should work together and have common goals. Making the delivery process work like an industry where we automate as much as possible and remove bottlenecks to improve productivity also switches the operations role from actively participating in the delivery process to instead monitor, improve the process. When less and less time are spent to fire fight production issues or manually applying complex releases operations can instead work proactively with the development teams to for example plan for patching, updating or assist with performance tuning.

These are my views on how DevOps and CD relate, but feel free to comment what your view is.
Original Post