In our previous posts, we have introduced the concept of DevOps and the symptoms showing the need to adopt a DevOps approach. From a practical perspective, once we have decided that we want to implement DevOps and we are clear about the steps that need to be taken to implement it, we have to determine which tools are going to help us on our journey to that implementation.
This phase is precisely what I am going to address in this post: what is the most common set of tools used in implementing a DevOps approach? I should clarify that the tools I will be referring to are those that have statistically been shown to help teams and organisations improve upon their ultimate goal of delivering maximum value to the customer in the shortest possible time.
And since the process of selecting the tools can be complex if it is not fully understood, I will dedicate two posts to this topic. In this first part, I will explain the concepts and methodological tools that will guide us in choosing the specific tools. In the second part, I will outline the tools that Xeridia recommends based on our experience in addressing these concepts and methodologies, which also simplify the DevOps implementation.
Before taking a closer look at the methodological tools, we need to first mention “The Three Ways” to DevOps described by the author Gene Kim. These define the underlying principles of DevOps and explain to a large extent the success of this methodology.
Let’s look at a summary of each of these principles:
The First Way – Systems Thinking or Accelerate Flow.
Companies that implement this first way have been shown to reduce cycle times, improve quality and minimise production problems.
This principle seeks to reduce full development cycle times, in other words, from the time an idea arises until it is delivered to the customer. This first way lays the foundation for implementing continuous delivery. In fact, this first way is synonymous with continuous delivery.
In this regard, a fundamental concept to enable continuous delivery is the Deployment Pipeline pattern, which allows the specified workflow to be broken down into validation stages through automated tests that increase confidence as it progresses through the pipeline and provides immediate feedback in the event of any failure. The principle of Systems Thinking includes methodological tools such as the use of continuous integration techniques, automated testing and agile methodologies such as Kanban, Scrum and Lean. The set of tools we choose must adhere to this principle in such a way that a good tool will be one that helps increase or accelerate the flow of work from business to customer, passing through all the stages of the software development and operation life cycle.
The main methodological tool could be Value Stream Mapping, which displays the flow that work follows through the value chain, from conception to delivery.
However, if we want to accelerate the flow, we first need to understand that flow and check for any waste or bottlenecks that we can remove to accelerate that flow. In this area, LEAN methodology and the Theory of Constraints (TOC) are the best fit.
Also of special relevance at this stage are the concepts of “Small Batch Release” and “One Piece Flow”, which seek to reduce the complexity and increase the frequency of deliveries, as opposed to “Big Bang Releases” (a few large-scale deliveries per year). Applying these concepts means moving away as far as possible from the waterfall development model. It has been shown that companies that adopt these principles increase the number of releases, thereby reducing cycle times.
In general, the aim is to make work visible, minimise work-in-progress, eliminate waste and reduce bottlenecks.
Therefore, the tools and working methods that we select will be those that facilitate the adoption of these types of principles or concepts.
The Second Way – Amplify Feedback Loops.
Once we have accelerated the flow from left to right, we need to collect feedback from the customer lower down the value chain as effectively and as quickly as possible.
At this point, tools for monitoring, telemetry, customer communication, establishing SLAs, etc. become vitally important.
The goal is to immediately know how our service is operating at all levels of value delivery. At all levels means at both the machine operating level and the customer satisfaction level.
This requires tools that are capable of capturing information and generating knowledge. This knowledge base will be of vital importance for improving the system.
This second way assumes that all those involved have access to the knowledge acquired at the time it is needed.
The Third Way – Culture of Continual Experimentation and Learning.
The third way is more of a complete organisational change in your organisation from the perspective of collaboration and continuous improvement through the constant experimentation and learning derived from that experimentation.
In this regard, the tools we choose should foster this spirit of experimentation addressing the key point – the blameless culture. We cannot experiment when a fear of failure pervades the organisation. Only when we are sure that the experiments are not going to have negative consequences can we experiment freely.
From this perspective, the concept of resilience takes on a meaningful role, in which the important point is not making mistakes but being able to recover and learn from them.
The use of blameless post-mortems will be an extremely useful tool for problem solving and learning from those problems.
Apart from blameless post-mortems, the systematic use of retrospectives is useful for analysing the process and identifying possible improvements to it. In this regard, the Lean Startup methodology is closely aligned with the concepts of validated learning through experimentation.
We have outlined above the processes and methodologies that our tools must support to facilitate the adoption of a DevOps approach. In summary, the key features that these tools must have are the following:
- Support visualisation of the workflow
- Make it possible to accelerate the workflow
- Increase collaboration within the organisation
- Enable knowledge to be accumulated and made available to those who need it
- Amplify feedback from the user to the business.
- Provide feedback on the state of production environments.
- Support the main agile methodologies.
- Support the Deployment Pipeline pattern.
In the next post, we will see how Xeridia’s ORBIS platform responds to all these aspects, which makes it perfect for a DevOps implementation in any organisation. In the meantime, if you would like more details on ORBIS, click here.
Emiliano Sutil is a Project Manager at Xeridia
 Source: State of DevOps Report 2017 https://puppet.com/resources/whitepaper/state-of-devops-report