Continuous Delivery and Agility
Continuous delivery is one of the exciting new trends in software development (Continuous Delivery by Jez Humble and David Farley). The purpose of the practices and principles of continuous delivery is to encourage “greater collaboration between everyone involved in software delivery in order to release valuable software faster and more reliably (Humble & Farley).” Continuous delivery is an extension of the agile practices that deliver value to customers early and often. As shown in the figure, it combines continuous development (iterative development of features), continuous integration (characterized by comprehensive automated testing), and continuous deployment (the ability to deploy new releases to production frequently)1.
At a more detailed level, Jez (via email) reiterates that there are three strands to continuous delivery—one concerned with automation of build, test, deployment, database migrations, and infrastructure; one concerned with practices, such as continuous integration, good configuration management, and testing; and a third concerned with people; having everyone involved in delivery work together throughout the of the software delivery lifecycle.
There are two integrated issues in gaining business value from continuous delivery—strategic impact and agility (or adaptability). First, as a company progresses further to the right on the horizontal axis, additional investment and organizational collaboration are required. Therefore, from a business value perspective, companies need to assess the strategic impact of the progression. While continuous delivery can reduce cost and risk also (through more automation), the most significant benefits arise from frequent release of new software functionality. The key question then becomes, “How can we benefit from releasing new functionality monthly, weekly, or even daily?” Furthermore, “How will our organization and business processes need to change?”
In large organizations, IT applications support a variety of business areas. For some applications the benefits of continuous delivery may be revenue enhancing, while in others it may be cost and risk reduction. In thinking about implementing continuous delivery across an application portfolio, companies should begin with those that have the biggest strategic impact, those with revenue enhancing prospects.
The second issue in gaining the benefits of continuous delivery is the organization’s agile or adaptive maturity. Many organizations seem to be stuck at Agile 101, the rule-based approach to agile (do this, don’t do that) that is a necessary first step towards becoming agile, but it’s only a first step. To take advantage of the fast-paced responsiveness of a continuous delivery environment, the entire organization–both delivery teams and management– needs to be mature—from embracing the process changes required to respond rapidly, to engaging in the collaboration required between development and operations, to embracing an adaptive, exploratory mindset.
Continuous delivery may be the next big step in delivering strategic business value to clients quickly, with lower risk and possibly lower cost. However, it won’t happen unless leadership understands its potential strategic impact and the organizational adaptability necessary to implement it.
1 Note: Continuous delivery covers the entire lifecycle and may not include continuous deployment, which is left to the discretion of the customer. This is shown in the figure by the continuous delivery arrow not extending completely across continuous deployment.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)