Adopt Continuous Delivery, face Challenges and reap the Benefits
Vipin Jain
Head Testing and Delivery Manager | ?? Speaker | ?? Community Builder | ????New Technology Enthusiast
What is better than automating the software's build-test-deployment cycle. Do the builds, run automated tests and deploy the software. And you can do this many times a day. All of this controlled by a "Build Master". Yes..you want it? then adopt Continuous delivery approach. You can toggle your features to be released and can release selective features to selective audience. e.g. the social media site Facebook uses continuous delivery to roll out certain features only to “female users between the ages of 18 and 34 in the US.”
The Continuous Delivery pipeline is made of of feature definition, design, development, build, automated testing and deployment. Neither it manages development with milestones ( Waterfall) or as stories or sprints (Agile). It considers rolling out features as Continuous. Continuous delivery offers a number of benefits and challenges for organizations.
Benefits
- Strategic impact: Once we adopt Continuous delivery, we loose very less time between initiation of a feature and its availability in production. Compared with those competitors who use longer delivery cycles, this approach offers a very crucial strategic advantage for the company that uses this methodology.
- More chances of evaluation: Rather than following the approach to do an elaborate requirements gathering, analysis and design, continuous delivery enables features to be rolled out quickly with the evaluation of how useful they were or not, deferred past deployment. Feedback can be obtained with each release in production and they can be turned off, if they are negative.
- Toggle the Feature: Sometimes we come across features that organizations are not sure of but want to experiment. Based on them, certain features are available to a user or turned off. Feature toggling offers a very rapid way of doing end user testing or even customizing the software for different kinds of users. It also provides a way of turning off or on a feature as needed at any time.
- Value analysis is available: When gathering requirements, it is hard to predict the value of each software feature to users. Toggling enables continuous delivery environments to track actual usage by feature. This can enable the comparison of predicted usage vs. actual usage and by inference, predicted value vs. actual value of different features. Those that failed can be turned off.
- Better quality: Since automation tests run each time when you do multiple build-test-deployment cycles per day, the test automation traverses through the entire software many times a day, catching any software defect that slips through anytime, especially with unit tests are also rolled in. Better quality of software is ensured.
- Reduction of software backlogs: Since the features could be deployed more rapidly than with other methodologies, CD has the potential of rapidly reducing software backlogs.
- Streamlining of processes: To achieve CD, a high degree of discipline at every stage of the build-test-deployment automation cycle is required. It ensures all internal business processes streamlined and be efficient.
There has to be Challenges if Benefits are offered.
- Disciplined efforts may not suit Large organizations: The high degree of discipline and close, quick coordination is needed in a build-test-deployment cycle. This suits smaller organizations more than larger organizations.
- Features need to be granulated: Large features need to be broken down into smaller ones to achieve CD. This may cause issues with long running features as they may not be suitable for breaking down.
- Methodology leapfrogging challenges: Many organizations are still in the process transitioning to Agile development methodologies. Continuous delivery demands a higher level of process discipline than the other ones and as such may be difficult for such organizations to handle.
- Tool support on various platforms: Availability of automation tools for continuous delivery is best on Linux, and in other environments, somewhat spotty. This is especially true of organizations with legacy computing environments.
- Time to commit, validation challenges: Features may be deployed but still may need to be validated before being committed. Validation of feature usage and utility takes more time as compared to the earlier parts of the continuous delivery cycle. So even if a feature is developed, tested and deployed, it may take time for it to be committed. However, continuous delivery offers features like toggling to speed the data collection for validation.
The never-ending quest to produce better quality software has led to development of Continuous Delivery methodology. It uses build-test-deployment automation to achieve its goals. It presents a number of benefits, but only if organizations are able to win against the challenges in its adoption.