Machine Learning Use Cases for DevOps Platform
DevOps Platform - credits: Tech Mahindra

Machine Learning Use Cases for DevOps Platform

If you are into building DevOps platforms that integrate various parts of your product life cycle like code check-ins, builds, Continuous Integration (CI), Continuous Deployment (CD), ticketing system, sprint planning, release management etc.; here are some interesting Machine Learning Use Cases that you can implement in your platform:

1.   Predicting Build Time

 

We will collect information about the machine on which a build was run, number of lines of code (#lines) that went into the build, number of files of code (#files) and the time it takes to complete a successful build. We will train a regression model using these input parameters of build machine, #lines and #files. Using this trained model we will predict the build time for any build in advance. If the actual build takes more than 120% of this predicted build, we will send an alert since it is very likely that there some issues with the build.

2.   Sprint Predictions

 

Software Development is about providing rich functionality meeting various complex requirements with high quality. Agile methodologies that cater to it in iterative and incremental fashion are becoming popular and commonplace. It breaks down the rich complex functionality in small user stories. These user stories are scheduled over small milestones that are called as sprints. Every sprint runs typically for a small duration of two weeks. Once a sprint is planned it is important to track it for any further fine tuning on the go. It is mostly a balancing act between achieving more and more incremental functionality while keeping the high bar of quality. The richness of functionality relates roughly to the number of user stories planned during a sprint. The quality has multiple measures like number of open bugs, automation coverage. The sprint typically schedules multiple activities like feature development, test development, bug fixing, bug finding, automation etc. All these activities however have a fixed limited time of, say 2 weeks. We will monitor all these parameters throughout the sprint along with parameters affecting them (e.g. number of developers, number of testers, number of automation engineers, number of lines of code added etc.). Considering all these parameters, the number of remaining days in the current sprint at any given time will typically dictate how much of the activity of each category can be achieved realistically. Based on these forecasts ML will convey whether the sprint is on track. It will also make recommendations like whether we can pick up any more or need to drop any existing user stories. It will also guide in conveying whether to focus more on feature development, test development, bug fixing, bug finding or automation, based on say targeted values of bug count, test cases, code coverage percentages etc., as a part of fine tuning.

We can either compute these multiple guiding recommendations as a multi class classifier or as multiple regressions based on all the considered input parameters.

3.   Intelligent Ticketing System

 

For any newly filed ticket we will:

a.      Categorize the ticket automatically

b.     Find similar tickets

c.      Automatically assign the ticket to the right owner and

d.     Automatically resolve the underlying issue, if possible.

All these activities will be performed by doing Natural Language Processing (NLP) of the content of the tickets and the past history.

 

4.   Predicting Release Time

 

Any release typically has numerous criteria e.g.

a.      No priority 0 defects

b.     80% code coverage

c.      All user stories completed

d.     90% automation achieved

e.     Not more than 40 total defects etc.

It would be good if one can effectively predict how long it will take to complete the current release at any given time. To achieve this, in addition to above mentioned parameters we will capture:

a.      Number of developers on the team

b.     Number of QA engineers on the team

c.      #lines

d.     #files

e.     #total defects

We will train a regression model to predict the release time as output of these input parameters. Using this trained model we can predict the release time from any given time.

To view or add a comment, sign in

More articles by Sameer Mahajan

  • Quick Fix Engineering a.k.a. जुगाड in the Indian Context

    Whenever we talk about engineering it has got to be quick fix and even more so in the Indian context! This little…

  • Migrating from Toronto to New York

    Introduction When you decide to live in a neighborhood, it is mainly because of quality of life. It depends on your…

    3 Comments
  • Paradigm shift in businesses with machine learning

    With advent of machine learning there is a paradigm shift in ways of going about businesses. It is mainly impacted by…

  • Alexa Custom Skill Life Cycle

    After working on alexa custom skills a couple of times over the past three years, I thought of writing this…

  • Striking fine balance in today’s outsourced world

    One of the well-known preaching of all times is to never do anything extreme but always strike a fine balance of…

    2 Comments
  • A Primer on Neural Networks

    Background Any system has certain number of inputs, certain number of outputs and some relationship in between. A…

    1 Comment
  • Fast Storage for Openstack

    The data storage system of any computer is the slowest part, compared to any other major component such as CPU, DRAM…

  • Regression in Machine Learning

    Regression is the study of predicting an output that is a real number based on values of a number of input features or…

  • Machine Learning

    Introduction Machine learning (ML) gives computers the ability to learn without being explicitly programmed. Evolved…

    2 Comments
  • Storage Virtualization

    Storage Virtualization is gaining momentum in various deployment models of IT infrastructure. Let it be simple private…

    1 Comment

Others also viewed

Explore content categories