The Key to Realizing the Promise of Agile and DevOps
The Key to Realizing the Promise of Agile and DevOps
In the past decade, companies have embraced Agile development to increase collaboration and cut the time it takes to develop new software. In fact, according to a recent survey, two-thirds of companies now say Agile is their primary development method, and another one-quarter report they use a hybrid of Agile and waterfall.
Yet when adopting Agile, many companies face a sobering truth: Even with Agile, it still can take weeks for a developed feature to make it to production. Is this truly Agile? Does it really enable a company to deliver high-quality features to production rapidly and consistently?
That’s where DevOps comes in. Promising rapid delivery with increased reliability, DevOps has become increasingly attractive to companies that use Agile. Gartner says that by the end of 2017, just under two-thirds of companies will have adopted DevOps as well.
However, DevOps isn’t the silver bullet. It needs help to fulfill its potential. Because it promotes a set of processes and methods for thinking about communication and collaboration among departments (specifically, development, QA and IT operations), DevOps is as much about culture as it is about getting functionality to production seamlessly. And as we all know, culture change is hard. Such change must be interwoven throughout a transformation; it can’t just be implemented as a quick improvement solution.
A more pragmatic approach to implementing agility with quality is to establish an overarching goal of DevOps, then focus on automated release, fast feedback, and continuous monitoring through a Continuous Integration/Continuous Delivery (CI/CD) implementation. CI/CD breaks down work and change into more manageable “chunks,” which in turn leads to many quick wins that help teams adopt and adapt to new capabilities over time.
CI is a practice that enables developers to regularly merge their code changes into a central repository, after which automated builds and tests are run. CD enables a company to get changes of all types—new features, configuration changes, bug fixes and experiments—into production, or into the hands of users—safely, quickly, and sustainably. Together, CI and CD implement the changes necessary to make the DevOps philosophy of delivering value quickly a reality.
A typical CI/CD implementation has four primary objectives:
- ESTABLISH FLOW: At the outset, an organization must “establish a flow”—i.e., define the pipeline for software application delivery in the organization, and eliminate waste and reduce rework or lead times in that process.
- IMPLEMENT FEEDBACK LOOPS: As soon as a repeatable process is in place, the company can begin automating feedback loops throughout the pipeline to quickly identify and fix issues (mainly through automated testing). Typically, key parts of the first two objectives are initially done for a single application as a pilot initiative.
- AUTOMATE RELEASE CHAIN: Next is automating the release chain—i.e., deployment—to all environments, including production, for the pilot application.
- ADOPT ACROSS ENTERPRISE: Finally, in a series of stages, the company moves beyond the pilot application, extending this pipeline automation across all key applications in the organization while changing behaviors throughout the transformation initiative—in essence, implementing CI/CD to achieve a culture of DevOps.
It’s important to note that 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 below. For example, by tackling key activities in steps 1 and 2 simultaneously, an organization can stand up a CI pipeline within a number of weeks to create a minimum viable product quickly. This, in turn, builds confidence and momentum early in the CI-CD implementation.
Meet the Author
Don’t let his serious face fool you. He is passionate about DevOps, continuous integration and delivery, automated testing, and shifting QA left. And he’s fun to work with. Harish has led teams on multiple occasions to design, implement and deliver complex software platforms and enterprise IT systems.
In upcoming posts, we’ll take a closer look at each of these four steps. In doing so, we’ll highlight the real-life experiences of one company, one of the largest healthcare benefits administrators in the US, that implemented CI/CD to help foster a DevOps transformation. Serving approximately 24 million members across the US, this healthcare industry leader wanted to ensure a more reliable technology system and be able to scale to enable rapid business growth. However, the company struggled with issues common to many large enterprises: unreliable system performance, difficulty deploying code, unavailable environments, “late-in-the-lifecycle” fixes, missing feedback loops, and inconsistent processes. These challenges resulted in significant rework, extensive manual intervention, increased lead time, and higher costs.
The company wisely recognized that it wasn’t only the systems that needed adjusting, but also the processes by which the teams worked. Over the course of two years, with SQA’s help, the company systematically addressed each of these concerns with CI/CD. Today, the company enjoys a culture of collaboration that results in consistent, repeatable, and fast delivery to production and higher-quality products.