(This article corresponds to the series dedicated to DevOps)
So you decided to put the DevOps philosophy into practice. Cool! But… where to start?
(If your answer is: “let’s use Docker!” , nice try but…Docker IS NOT DEVOPS! ).
Well, back on topic, this post will give you a map and compass to know where to start and what are the steps to follow to become a DevOps black belt.
Maturity Model
DevOps and martial arts may seem like two completely different areas, however, it is possible to use the same analogy since the practitioner’s progress is measured by gradually gaining mastery in different areas of the art .
Inspired by other maturity models such as those by Jez Humble Fundamental book on DevOps philosophy: Continuous Delivery by J. Humble and D. Farley, and Scaled Agile Framework Article on how to measure your DevOps level, I decided to create a simplified version of these.
The hardest part of using this model is being honest with ourselves. Yes! You and your software/IT teams will have to talk frankly. Don’t worry, admitting that you have a problem with lack of communication, lack of automation or bugs found in Production – is the first step towards rehabilitation.
Levels
White Belt – Ad Hoc
At the Ad-hoc level Ad hoc is defined as: “… a solution specifically elaborated for a precise problem or purpose and, therefore, not generalizable or usable for other purposes.” Wikipedia – Ad Hoc Decision making tends to happen due to emergencies in Operations, Development or Quality. Basically, to “put out fires,” teams at this level make decisions (to save their asses!) that should be temporary, but end up becoming official implementations. Some examples: Creation of Features due to pressure from some clients, lack of software architecture, patches in the infrastructure or software configuration in Production. Likewise, there’s no consistency in the creation and configuration of infrastructure. In essence: chaos and reactive behaviors rule the team.
The main feature of this level is the prevalent “Finger Culture” (I don’t mean this finger: , but this one:
). Toxic scenarios like this, where accusations between people or teams are part of the day to day, are the first thing that should be modified before aspiring to level up.
Yellow Belt – Repeatable
At this level, transparent communication between teams begins, especially between Development and Operations (Development + Operations = DevOps!).
The most important processes, despite the fact that they are still manual, are now documented in writing or in diagrams, in order to allow their visualization for future automation.
Similarly, the Development team gets into the habit of creating Unit Tests as part of the new functionality developed, thus reducing manual testing.
Tools are beginning to be used to collaborate with team tasks and to allow standardization. For example: code versioning tools (Git, svn, etc.) or task organization tools (Trello, Jira, etc.) are adopted.
Green Belt – Defined
Communication is clear and fluid, which allows decision-making and its results to be shared between the different teams (achieving peace between them is not a utopia).
At the level of processes and technologies, the teams manage to greatly reduce their Technical Debt (Two references: Wikipedia – Technical Debt and this valuable article by Enrique Dans.) thanks to the automation of other types of tests such as Integration Tests, User Acceptance Tests (UAT), and Stress Tests.
On the other hand, the use of Infrastructure-as-Code and Real-Time Monitoring allow infrastructure provisioning and configuration to become simple and predictable.
Something interesting about this level is that the teams could perform deployments to Production with each change in the code (commit) automatically if they wished. If you want to know how to get to this point, don’t forget to read Continuous Delivery: Births without Pain.
Blue Belt – Deliberate
Well, well, here things get good. At this level, decisions are based on metrics, that is, monitoring is so mature that we are capable of identifying patterns, both in the infrastructure and in the use of products.
Deployment to Production is automatic with every change in code or infrastructure. This trust is earned through practicing the principle called Andon Cord (Learn, Read and Andon Cord. Zero Defects) which allows them to continuously ensure quality.
At this level, we no longer talk about CI/CD (Continuous Integration/Continuous Delivery) because these practices are understood. Just as breathing is unconscious, organizations that reach this point do not need to negotiate time invested in CI/CD because it is implicit that they are a fundamental part of the success of any project.
Black Belt – Optimized
Welcome to the big leagues. At this level, organizations act as a scientist would: postulating hypotheses and validating them through experiments, or in other words, they practice Continuous Learning. This allows venturing to innovate (try “crazy” ideas ) to have a high probability of success.
Deployments to production do not cause any type of interruption in the service, which – worth clarifying – already has High-Availability.
As opposed to entry-level, these organizations use Chaos to continuously improve (Anti-Fragility and Netflix’s Chaos Monkey are highly suggested).
Note: Reaching the level of Black Belt does not imply that your problems are solved, but that you will have different problems, for example: having millions of people protesting for their privacy, ethical dilemmas about the use of Artificial Intelligence or having countries restricting the access to your portal for considering it a danger to the state.
If you’ve already done a mental assessment of the current level your development team is at and earned a white belt, don’t feel bad. On my first self-assessment, I discovered that I didn’t even have a seat belt!
Since every organization is unique, the Maturity Model presented in this post is a basic reference to help you get started on the DevOps journey. You will find other models with more detail that will also help you such as Solinea and ThoughtWorks.
What stage of the DevOps journey is your team at? What belt do they have? Leave your comments and questions and let’s continue helping more teams to progress on their path.
Keep on learning and maturing.