SRE concepts part 9 ( Stability versus Agility )
Marcel Koert
Freelance (DEV/OPS,CLOUD,Site Reliability, Platform) engineer. AT this time working for ING. And I am Microsoft Azure Administrator Associate, got my certification 31 July 2020.
The ninth article in the series about SRE Concepts/Topics is about?one topic, "Stability versus Agility".
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 in Product Development and Deployment
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.
Stability in Development and Deployment
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.
Finding the Balance
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.
领英推荐
Conclusion
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.
Cloud || DevOps || Software Development
3 年Learning to work with XP, TDD and building my code in pipelines in my formative years as software dev made me embrace the idea that stability and agility are not two extremes on a scale but more complementary concepts. Focusing on agility without ensuring stability leads to a chaotic product, neglecting agility in favor of perceived stability will lead to a product that becomes increasingly crystalline in its structure and ironically brittle, with almost any change being a liability. In DevOps I want both (and more): I want to have an agile value stream, a quickness to respond to changes (if you want you could call it fluidity), but I want to have certainty that the system is reliable under constant changes. Agile Processes ensure the former, SRE tooling helps to enable the latter.
Founder DevOps Bootcamp | O maior ecossistema DevOps do Brasil!
3 年Incredible!
Platform Engineering & SRE Leader | Championing Unified, Secure Software Development & Boosting Developer Productivity through Superior Experience
3 年Thank you Marcel Koert for very insightful writings on SRE concepts. I found them to be a mini-handbook.
Enabler of people | Reliability Engineering Advocate | Podcast Host | CNO - Chief Naming Officer
3 年I really enjoy following your series Marcel Koert. Keep writing please.