As described in the preface, Continuous Delivery (CD) and DevOps are complementary ways of working. The former gives anyone who delivers customer value via software the ability to do so rapidly, consistently, and—as the name implies—continuously. The latter helps harmonize the teams that deliver and support said software. Both approaches can help you to optimize, streamline, and improve the way you work, and ultimately how you deliver value by shipping quality software.
It should be pointed out that the true meaning of these approaches have been blurred over the past decade—be that by tech press misunderstanding or recruitment businesses wanting to add 10% on salary rates, or software vendors and consultancies wanting to make their fortune by jumping on the bandwagon.
I have summarized what CD and DevOps are, but before we proceed, it may help if I highlight what they are not:
- Continuous delivery and continuous deployment are not the same—the former focuses on business value and the latter is the mechanism of shipping software
- A DevOps engineer is not a magical wizard. Software engineers and DevOps engineers are basically the same—the former creates text files that are used to create software assets and the latter creates text files that create environments and configuration to run said software
- DevOps does not replace traditional system operations activities and approaches—it extends, complements, and enhances them
- DevOps does not remove the need for ensuring your software, and the environments in which they run are highly secure—although this can ease the adoption and implementation of SecOps
- CD and DevOps are not the silver bullet to remove all of your process and business issues, although they can help reduce the overall number
One thing you need to take into account is that almost all successful software businesses go through a number of phases of evolution. They normally start life as a small highly-focused team with good ideas, plenty of ambition, and some investment. As they build their market share, reach, and revenue, a period of rapid growth normally follows both in terms of workforce and spend. As the business matures and becomes established, they transition to the next phase of either continued and substantial growth to keep ahead of the competition, or make themselves a target for acquisition—this usually depends on how quickly investors want to see a return.
It's also inevitable that as a business goes through this evolution, the day-to-day business processes will become more complex, which in turn leads to complexity and pain in terms of how software is delivered.
The adoption of CD and DevOps can assist in reducing this complexity and pain; however, the effectiveness and benefits a business can reap are very much dependent on where the business sits on the evolutionary scale. If you are off the mark, then adoption can be more trouble than it is worth, and you may end up making things worse for the overall business. Not only that, but business, are strange and unique creatures—especially those whose raison d'etre is delivering software solutions—and no two are the same; therefore, the adoption needs to be uniquely tailored to fit.
The topics we will cover in this chapter are as follows:
- A more detailed explanation of the various phases of the evolution of software delivery
- The positives and negatives of each phase
- How you can ascertain which phase you are in
- The advantages—some unforeseen—that can come from a CD and DevOps way of working
To make it a little easier to understand what all of this actually means, we'll now dig a little deeper into these phases by following the evolution of a typical software-based business, called ACME systems.