For any organization that develops and maintains software as part of its business strategy, the ability to build, test and release code updates quickly is vital to optimizing processes and sharpening competitive advantage. In some cases, it is inextricably linked with maintaining market delivery goals, as well.
Despite this fact, many firms’ software development lifecycles (SDLCs) become expanded beyond a reasonable timeframe — or stall completely. Why is this? Process inefficiency and deferred resolution of kinks in the development pipeline are often the culprits. Teams are so focused on meeting release goals for each iteration that they result to workarounds, such as manual intervention, to get the release cycle completed. The initial idea may be that these will be temporary fixes, but they often remain entrenched in the development lifecycle, reducing efficiency over the long term.
Orasi’s ATS practice worked with a company that was experiencing this issue at an extreme level.
- Their in-house platform was a composite application that required successful interaction and information exchange among 21 individual applications.
- The team possessed tools that could automate the development delivery pipeline, but with 1,000 test cases to run for each release, teams felt they didn’t have the time to engage in pipeline automation, continuing to rely on the same ineffective, hybrid approach. As a result, it took teams more than eight days to complete one release cycle for just the Dev environments.
- The hybrid “band-aid” solution worked, but barely, and it was so inefficient that it was literally impacting market delivery of the company’s products.
In this particular instance, Orasi’s experts helped client team reduce pipeline throughput from eight days to eight hours — not only automating the pipeline but accelerating it significantly, as well. Following are the changes the Orasi team effected. These should be the goals of every company seeking to achieve a fully automated, streamlined Continuous Integration/Continuous Delivery (CI/CD) pipeline.
- Use automation to build the development environment and tear it down when the release cycle is complete.
- Automate recompiling and loading of each application into the development environment. Eliminate all manual intervention. (This recommendation assumes all testing and defect elimination has already been completed for each app in the composite.)
- Implement automation to recompile the entire application stack dynamically.
- Automate dynamic scripting for test cases, with automated tracking and notification if a problem occurs.
- Rely on automation to run the test cases, as well, and do not allow defect resolution to break down the automation routine. Integrating new code to resolve defects under full automation should work no differently than under a manual or hybrid development environment.
In doing so, teams can achieve what is tantamount to “push-button automation” that will run every time a code update is needed for one of the apps in the composite application:
- Infrastructure for the release will be built dynamically.
- Application components will be integrated with one another and the composite app will be rebuilt and deployed onto the infrastructure.
- Scripts will automatically build and run the test cases.
- The application components will be released or returned through the cycle for defect resolution.
- The entire composite application will be recompiled dynamically for release.
This example doesn’t address the Quality Assurance, Certification or Production stages, but organizations should seek to automate all of them to the greatest degree possible as well.