This vendor-written tech primer has been edited by Network World to eliminate product promotion, but readers should note it will likely favor the submitter's approach.
Discussions about continuous delivery to facilitate the rapid and reliable delivery of software have been showing up all over the place, and with good reason. Continuous delivery brings together automated testing, continuous integration and automated deployment, which enable businesses to deliver functionality to customers more frequently and with fewer errors. Some of the most successful organizations in the world use these practices to deploy hundreds of small changes in their software every day, eschewing infrequent, large releases.
With frequent and rapid releases, continuous delivery can reduce stress throughout an organization, even as the pace of change dramatically increases. But, when you stop developing towards single large changes and start making many small changes, you have to alter the way you work. And these new ways of working end up reducing your stress levels.
I'll admit that this may not sound likely. If making a single larger change is painful, it would seem to follow that repeatedly making many small changes that build up to that single larger change would be even more difficult. However, the problem with the traditional method is that you create a lot of risk when you do a large change in a single step because, if anything goes wrong, you're not sure which part is responsible for any problems you see. You might be overwhelmed by testing a big code drop and be unable to sustain the level of concentration required to test all of the expected changes by hand, or even understand the full impact of the change.
There are five main reasons that continuous delivery reduces the stress levels throughout an organization. Seeing how continuous delivery achieves some of these might be a bit surprising.
Automation is key to the success of continuous delivery. Any routine step that is currently done by a person needs to be encapsulated into a repeatable process that doesn't depend on an individual's memory, organizational folklore or hand-written instructions. You should be able to do a system build — complete with unit tests, integration tests and automated user tests — from a single command.
Increased automation increases consistency and speed of work. Consistency removes many avenues for mistakes and reduces the overall rate of mistakes. That's in contrast to a traditional environment in which things aren't automated and "human error" is an all too common explanation for mistakes. When people are bored and doing the same thing again and again, the probability of mistakes goes up. Mistakes especially unnecessary mistakes are stressful.
As soon as you make a change, the automated tests can tell whether something has gone wrong. And if it has, it's easy to trace it back to the change you just made. In other words, if I make a change and something is no longer working as we expected, it pretty much has to be my change.
Sign up for CIO Asia eNewsletters.