Created on 2021-07-14 12:12
Published on 2021-07-14 12:22
The ninth article in the series about SRE Concepts/Topics is about one topic, "Stability versus Agility".
As soon Agile development made its way into the IT world, discussions arose in the rusty message boards across all the major platforms: better, Stability or Agility? Few were able to present reasonable arguments. However, with the rapid growth of the need for DevOps engineers and Site Reliability Engineers, those old boards trembled again with thousands of opinions.
When it comes to DevOps or Site Reliability Engineering, both Stability and Agility are crucial. A Site Reliability Engineer has to consider both parameters when building and deploying an application. However, with the rapid product development lifecycles, it sometimes is favorable to prioritize Agility over Stability.
Agility is one of the critical aspects of both DevOps and SRE. A more agile product development cycle means faster product delivery. However, to ensure that the minimum stability requirements are met, some stability factors are considered, even in an Agile environment.
Usually, following a stable development lifecycle ensures maximum Stability along with the required Agility.
Using automation tools can undoubtedly improve the Agility of the development cycle while ensuring Stability.
The most stable product development cannot be the most agile one as well. However, there are some tools and strategies you can implement to ensure both. Continuous development and deployment are some of the primary tools in any DevOps engineer's hands.
An engineer can ensure that the code they're writing is not causing any instability in the application using continuous deployment and integration tools. They do not have to check every line for compatibility issues manually.
Even though many such automated tools and strategies help maintain a balance between Stability and Agility, sometimes, it is essential to prioritize one of them. Usually, people often prioritize Agility over Stability.
One of the crucial jobs of a Site Reliability Engineer is to ensure a balance between Stability and Agility. A Site Reliability Engineer has to ensure that an application's Stability doesn't affect the Agility at which a developer can work.
Some studies even found that more reliable applications often increase the developer's Agility since they don't have to examine every line. A Site Reliability Engineer may choose to achieve this balance in any practical way.
Once the application becomes reliable, the engineer can rapidly deploy the application and wait for the results. Even though an unexpected rise in availability is good, a Site Reliability Engineer always wants an app to be predictable and have a steady growth. Even though "Boring" is terrible in other domains, it is desirable for product behavior.
Agility and Stability are the Yin and Yang of product development and deployment. Achieving the right balance between these two extremes is the best way to ensure a product's success. A product has to be reliable, all the while having a rapid deployment phase. It is what makes the job of a Site Reliability Engineer quite interesting.
Closing remarks
This article was the ninth post on SRE concepts. I did enjoy writing these articles a lot and I will continue writing articles but I do think I will start a series about a different subject until I can think of more material for the SRE concepts series.
If you want to read back the other eight, I have included the links below. Feel free to repost them anywhere you want.