If we think of DevOps there are plenty definitions, theories and more around. Also the 5 ideals of DevOps are an amazing piece of culture. But in my opinion, the best baseline to get in touch with DevOps are these books and the DORA State of DevOps reports from awesome authors like Gene Kim, Kevin Behr, Jez Humble and Nicole Forsgren:
The Phoenix-
and Unicorn Project
are awesome novels that are really worth to read. To summarize the books on a pretty high level …
… didn’t we all encounter something like this? The most of the time we’re waiting for stuff and waste our time in meetings or in manual tasks. To create value for a customer we need to rethink a lot. The book Accelerate
provides awesome capabilities to drive improvement:
Those 24 capabilities are a great north star, that can be used as an orientation in your way to master DevOps.
The three ways of DevOps
As a DevOps rookie the 24 capabilities can feel overwhelming. Therefore we should talk about the three ways of devops to get more in touch with the mindset and culture of DevOps.
This is the way …
The first Way - Systems thinking
Enhance the performance of the whole System, by increasing the flow from …
left to Right
In other words, work should only flow into one direction, and that is downstream from Dev to Ops. While orchestrating the flow, always seek to increase the flow like Kanban teaches us. One thing to keep in mind is:
The performance of a system increases proportionally to the throughput
The Second Way – Amplify Feedback
Shorten & Amplify the feedback loop
Establish an upstream feedback loop to optimize the value stream. To achieve this - a fast feedback from Production is required to plan the next steps in the “Plan” Phase. Based on the feedback from production, strategies can be crafted to move forward or make a pirouette to rethink the plans and find new ways to build and ship your software.
The Third Way – Continued experimentation
Promote experiments
The Culture & Environment are as important as the work being done.
To achieve mastery:
- Learn from success and mistakes
- Strive for constant improvement
- Practice! Get your hands dirty
From Theory to a more practical approach
Theory is nice but to really get the spirit of the DevOps culture we need to get the hands dirty. Therefore I’ll try to make a metaphor based on something we all know from our daily experiences > Washing dirty clothes. Time to …
With the stage and all actors in place we can now start iterating:
- Big laundry day once a week -> “Big bang release”
- Washing all in one shot. A lot of clothes needs to get done by the Devs
- Multiple changes are performed in Production with high risks. Red socks and white T-Shirts might get washed together and ruining the T-Shirt with side effects
- Ops is overwhelmed with drying so much laundry. The laundry will stay moist for at least 2-3 days
Let’s perform another and improve a little…
- Now we’re washing on a more regular base (every 3-4 days)
- Less changes than before in Production. This will reduce the risks of failures
- One problem still remains ->
Washing black and white cloths together still is a bad idea
. This problem is symbolic for clashing of resource requirements.
Things are working better now, but still not perfect. Time for another iteration …
- Washing in smaller loads on a daily base
- A tiny load (releases) result in a manageable risk for Production
- The Dev-Team can create faster value, since only a few loads of clothes needs to be washed
- Ops can dry the laundry overnight (more stable, less side effects)
Everything is flowing now more perfectly and all of the feedback from the production is now integrated within the flow. But we’re no DevOps if we wouldn’t drive it beyond the edge. Time for a final iteration …
- Automate the boring tasks. If it takes more than 60 secs of your time doing it manually, simply automate it
- CI/CD is the backbone and engine to drive DevOps culture
- Dev and Ops can focus on the important things to create value
Now we reached a state where it’s worth to come back to the 24 capabilities and start optimizing to master DevOps. To become superior you’ve to iterate even more and keep raising the bar. Hopefully, this more practical approach helped to dive more into the mindset of a DevOps. Happy to hear some of your stories, really would love to hear them :)
To be continued …