Continous Delivery in Agile

Continous Delivery in Agile

While in the past, when browsing the internet, it was common to be met with messages like “We apologize for any inconvenience. Our website is now down for maintenance,” today, thanks to the modern practice of Continuous Delivery (CD), we can keep our servers online as we patch and update our products.

Yet this is only really the start of it, as when paired with Agile development, the practice of CD is often said to lead to widespread organizational change.

So what exactly do we mean by “continuous delivery,” and should developers still be using it today? In order to appropriately answer these questions, it’s important to take a look at DevOps and Continuous Integration.

What is DevOps?

A portmanteau of “development” and “operations,” DevOps represents the concerted blurring of these formerly separate areas. As a result, it:

  1. Facilitates the flow of deliverables
  2. Creates an environment where you can build your software both quickly and reliably
  3. May be thought of as the underlying philosophy behind Continuous Delivery (CD) and Continuous Integration (CI).

What is Continuous Integration?

Continuous Integration, for its part, is the process of regularly building and automatically testing software. In practice, developers:

  1. Integrate code into a common repository (multiple times each day)
  2. Verify each update through an automated build.

Continuous Delivery Explained

Once you have both of these practices in place, you can finally move on to the fun stuff, as Continuous Delivery (CD), as it turns out, is just the logical next step in this process. After all, according to Agile signatory (and full-time legend) Martin Fowler, Continuous Delivery is “a software development discipline where you build software in such a way that it can be released at any time.”

Of course, when developers are constantly running tests — as is the case with Continuous Integration — this actually becomes feasible! Even better, however, when used alongside a Continuous Delivery pipeline management system like Kubernetes, all of CD’s required steps may be automatically performed for you. This allows customers to be given critical software updates or features without experiencing any workflow disruption.

Continuous Delivery in Agile framework

While CD itself is not specifically mentioned in the Agile manifesto, look closer and it is hidden in plain sight: “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software” reads the very first of the 12 Agile Principles.

The Manifesto, which turns 20 this year, triggered a revolution in the software development world, and in many ways, has successfully stood the test of time. But is Continuous Delivery still relevant two decades later?

Well, the practice is often said to tick a number of important boxes in any Agile framework. After all, it favors:

  • Iterative, incremental, and evolutionary work
  • Very short feedback loops and adaptation cycles
  • A focus on quality

In light of the above advantages, there are many other purported benefits that are often also attributed to CD:

Purported Benefits of CDRationale
Lower riskBy releasing changes both more frequently and incrementally, you can spot errors a lot sooner in development and fit them into short release cycles and Sprints. As a byproduct, this also makes rolling back releases much easier, as CD changes are considerably smaller and require no server downtime.
Feedback-driven developmentJust as with Scrum Sprints, releasing features faster will also mean receiving feedback throughout development. This means that you can incorporate your customers’ suggestions as you shape their products to the desired state.
Better quality productsWith the help of CD automation tools, developers are given a lot more time to finally focus on neglected tasks. In this way, critical issues such as user research, usability testing, security testing and performance improvements are given the front-row treatment they deserve.
Shorter time to marketVery often, in traditional software delivery, the integration and testing phases may take weeks or even months to complete. Yet by automating build and deployment, teams are able to incorporate tests into their daily activities — and thus eliminate these individual phases. This not only does away with excessive amounts of rework but can also reduce the time to market.
Lower costsContinuous delivery can also substantially bring down your costs. This happens because by automating development, testing and deployment, you are able to do avoid a variety of fixed expenses.
Happier teamsFinally, CD is also often said to foster a happier working environment, as it reduces developer burnout by making releases significantly less painful.

Continuous Delivery and DevOps Today

But are all of these things still accurate today? To understand the question of relevance, it’s important to analyze the most recent data.

According to the 2020 State of DevOps Report, the percentage of businesses classed as high-level on the DevOps evolutionary scale — that is, with full DevOps adoption including Continuous Delivery — currently sits at 16 percent. While this number may seem low on the surface, not only is it a two percent increase from the year before, but 79 percent of surveyed respondents were classed as mid-level on the DevOps scale. This suggests that CD adoption is still growing.

Moreover, according to the report, organizations with lower deployment frequency had “the lowest levels of efficiency, with 93 percent reporting low or very low efficiency.”

AI and Machine Learning

So what exactly is behind this continued growth? Well, CD expansion may be partly explained by the extraordinary adoption of AI and ML technologies. You see, as companies continue to search for greater efficiency and faster deployment tools, DevOps teams are increasingly aiming to keep human intervention to a minimum. This is done by fully automating the development process and is sure to remain a hot topic in the coming years.

Life Without Any CI/CD Practices

At the same time, modern development without any CI/CD practices in place is equally no walk in the park:

  • Your main code line becomes unstable.
  • Bugs lurk in a tangled web of multiple code changes, and you dread the effort it will take to find them
  • Every time your testers want to test a feature, they have to pester all software developers to not only learn the project’s status but also find a working build

The Cost of Setting Up

So we know that Continuous Delivery is still very much relevant today, but it’s important to be aware of its inherent expenses, as setting up a CI/CD toolset from scratch will require some additional resources. This can vary anywhere between $40 a month to over $100,000, depending on where you are on your DevOps journey — and may also cause unnecessary delays when employing rapid prototyping or building an MVP.  

Nonetheless, by embracing the many IaaS and PaaS services available today, such as Bunnyshell, you are able to gain access to conveniently pre-configured environments that enable even the smallest of startups to take advantage of reliable CI/CD pipelines.

Level Up Development

As the first Agile principle makes clear, in the end, it is the customer — not anyone else — who you should ultimately seek to satisfy. This principle alone still certainly applies today. While iterative development is more often than not beneficial, if your bug fixes and user stories are left stewing in repositories for weeks (without any feedback from your stakeholders or customers), then this will only lead to self-defeat.

By removing time-consuming activities hitherto associated with software delivery, you can focus on the most important task — that of actively delighting your customers.