DevOps is a conventional term now and a lot has been talked, planned and brought in practice around DevOps. No need to mention the mammoth tools and technologies around DevOps. DevOps is a practice with the end goal of unifying efforts of development(Dev) and operations(Ops) teams to facilitate the software development process with much efficient resource utilization, better performance, and increased productivity. Starting from the ideation and high-level architecture design to integration, testing, releasing, deployment and infrastructure management, DevOps aims at automating the process with monitoring throughout to get the insights. There are 3 ways to achieve the product development goal.
DevOps believes in shorter development cycles, with feedback and reviews at each stage which result in a much more dependable release. This is true because DevOps is not a one-day process or an application that can be installed at your workplace. It is an organizational change in practices and the way projects are executed.
No Point in singing “I did it my way”
I always ask my fellow technocrats/customers, if they have started any DevOps initiatives in their team or organization. The answer to this question has radically changed in past 3 years from ‘NO’ to ‘YES’, or to at least “we are planning”, now that everyone is realizing the benefits of adopting DevOps practices. If the answer is ‘Yes’, then my next question to them is, “have you measured effects of before and after DevOps?” to which I get a face with a big look of “are you kidding me?”. There is always a quantifiable outcome which you expect out of every effort you put in anything and DevOps is no exception. So, there is no point in just implementing DevOps practices, sitting back and singing “I did it my way” (of course on Frank Sinatra’s tunes). You should understand whether the practices you are implementing are serving the purpose or not. If they are not, then it is defying the whole idea behind DevOps. Though there is no tool as such to measure the impact of DevOps, it is necessary to measure the success of the practices you are implementing. This is where the DevOps metrics comes into the picture.
DevOps Maturity Scale
DevOps enables your Dev and Ops teams to collaborate on all possible fronts to foster the organizational culture, processes, and technological advancements which can be achieved with the help of various automation tools, technologies, and cultural changes in the organization. It is very important to understand where your organization is positioned on the DevOps maturity scale to set goals for DevOps and formulating a roadmap to achieve them. Below mentioned maturity scale will help you get the exact idea of DevOps maturity for your organization:
What is DevOps Metrics? Why do you need it? Which Metrics to choose?
‘CALMS’, which stands for Culture, Automation, Lean, Measurement, and Sharing, are fundamental values of DevOps. Much attention has always been paid towards Culture, Automation, Lean, and Sharing part but the measurement part always remains unattended or neglected to some extent.
Metrics is a system or a standard of measurement and as the name suggests, DevOps metrics is a way to measure the success of your DevOps. It will give you an idea of where you were, where you are and where you want to be. It will identify the areas which are performing as expected or performing beyond expectations or underperforming and need improvements. There are various standards or metrics that can be used to measure your DevOps success. Continuous Delivery Maturity Metrics assesses aspects that affect development and release of your software/application, DevOps Values Maturity Metrics, DevOps Maturity, Ideation Maturity, Release, and Deployment Maturity, etc. these are some of the standard metrics. It is very important as to which metrics to choose. Sometimes, you will have to choose the combination of metrics. In broader terms, DevOps metrics are categorized in:
- People/culture: People and culture are the most important part of any organization irrespective of the industry it is operating in because contented workforce in a contented work environment is the most important factor for organization’s productivity. These metrics assess soft elements which are sometimes hard to quantify. It includes knowledge sharing, cross-skilling, working culture across teams, turnover and response time, capabilities, team autonomy and decision-making processes, etc.
- Process: Any SDLC (Software Development Lifecycle) involves lots of processes starting from ideation to validation, development, deployment, integration, etc. So, the metrics in process category assess easily measurable and easy to identify processes and their effectiveness like lead time to development, deployment time, response time, the speed of different processes, the time taken to attend and solve customer tickets, etc.
- Technical and financial aspects: This is another easily quantifiable metrics which can include things like projects per quarter, code quality, customer ticket volume, failure rate, uptime, availability, number and cost of resources deployed and idle, etc.
What are the things to be measured?
All DevOps metrics involve a mixture of the parameters to be measured mentioned in above categories. But some of these parameters are easily measurable and can determine the direction your DevOps is taking your organization in:
- Projects completed and frequency of release: should be as high as possible and signifies ROI for the organization
- Percentage of successful/unsuccessful deployments: successful deployments should be as high as possible
- Mean time to recovery (MTTR): signifies time taken to resolve an incident from the time it is reported, ideally, it should be zero, practically it should be as low as possible
- Lead time (from development to deployment): time from starting a new code to its deployment in production
- Frequency of new deployment: how often a new code is deployed by the team?
In addition to this availability, code quality, velocity, frequency of outage, time to resolve defect are some other parameters which can be easily recorded.
DevOps without DevOps Metrics is like firing darts in the dark; you are firing towards your aim, but you won’t know if you are hitting it or not. DevOps Metrics provides analysis of your current DevOps initiatives and their impact on your organizational goals. It gives you an idea of your current state, helps you define your future state and roadmap to get there. These common set of goals provide a guideline for your team to foster an environment of cooperation and collaboration, improve performance, increase productivity and efficiency. DevOps metrics helps in understanding the interconnection and interdependencies of various processes. Also, it helps in assessing processes that need modifications, health and performance issues associated with the processes that can affect the overall organization in the long and the short term.
There are certain things which needs to keep in mind while choosing metrics for your DevOps. You should not choose many metrics as too many results will be fuzzy and cast uncertainty over decision making. The selected metrics should help in finding root causes if any, expose the challenges and help in finding the solutions and relevant results.
Opcito Technologies is always helping clients in their DevOps maturity assessment with DevOps metrics. Colwin Fernandes, CTO and co-founder, Opcito Technologies, on his recent visit to Australia in September conducted DevOps assessment workshops for 3 organizations. The main motive behind these workshops was to help our clients understand desired future state of their DevOps, setting goals, understanding motivations, analyzing the existing tools in use and selecting and building a toolchain and lastly the most important part formulating a roadmap. Contact Opcito, and we will be more than happy to have you with our DevOps workshop.