Companies embrace Agile development to increase collaboration and cut the time it takes to develop new software. Yet after adopting Agile, many companies face a sobering truth: Even with Agile, it still can take too long for a developed feature to make it to production. Is this truly Agile? Does Agile really enable a company to deliver high-quality features to production rapidly and consistently?
This is why DevOps has become increasingly attractive to companies that use Agile—it promises rapid delivery with increased reliability. In fact, Gartner had anticipated that by the end of 2017 just under two-thirds of companies would have adopted DevOps. However, DevOps is not the silver bullet! It needs help to fulfill its potential. Why? Because, DevOps promotes a set of processes and methods for thinking about communication and collaboration among departments (specifically, development, QA, and IT operations). Therefore, DevOps is as much about the right culture as it is about getting functionality to production seamlessly. Where to start?
Achieve Rapid Software Delivery
A pragmatic approach to implementing agility with quality is to establish an overarching goal of DevOps. Then, focus on continuous integration, fast feedback loops, automated deployment, and application release orchestration through a Continuous Integration/ Continuous Delivery(CI/CD) implementation. CI/CD breaks down work and cultural change into more manageable “chunks,” which in turn leads to many quick wins that help teams adopt and adapt to new capabilities over time.
SQA’s Approach to CI/CD Implementations
Together, CI and CD implement the changes necessary to make the DevOps philosophy of delivering value quickly a reality. The primary objectives of a typical CI/CD implementation are:
- DEFINE DELIVERY PIPELINE: Put in place systems (people, process, and technology), to develop, build, test, deploy, and validate all the way through production, safely, quickly and sustainably.
- IMPLEMENT FEEDBACK LOOPS: Automate feedback loops throughout the pipeline to quickly identify and fix issues (mainly through automated testing).
- AUTOMATE RELEASE CHAIN: Deploy in a consistent and seamless manner to all environments, including production (initially for a pilot application).
Then, teams can adopt and extend pipeline automation across all key applications in the organization.
These are not separate, disconnected, completely linear steps. Certain portions of each can be performed simultaneously with the preceding step to accelerate momentum, as illustrated in the figure above. For example, by tackling key activities in steps 1 and 2 simultaneously, an organization can stand up a CI pipeline within a few weeks to create a minimum viable product quickly. This, in turn, builds confidence and momentum early in the CI-CD implementation.