DevOps

Cognitive DevOps Insights

Share this post:

Over the past year, I focused on providing better data for the DevOps process. Data-driven is the wave of the future, and the wealth of data that is in code repos, issue-tracking systems, and build systems can be used to improve the ability to deliver apps faster and with greater quality.

Three areas of focus are key:

  • Prediction models for the error proneness of files in your app and files from open source projects. These models help you better understand the potential risk in your code base.
  • Team interaction graphs, which demonstrate how your team is interacting through code and issues. With this information, you can analyze changes over time from your team and understand the areas that are needed for team growth.
  • Tracking code coverage, unit and functional tests, and security scans to determine the risk that is associated with deployments.

My team takes advantage of these metrics by using the IBM® Bluemix® Continuous Delivery service. With that service, the team can focus its limited time on the areas that provide the most benefit, and squad leads better understand the workings of the team and areas for improvement.

You can try these capabilities at bluemix.net/devops. The “Deployment Risk Analytics with GitHub and Jenkins” template and the “Developer Insights and Team Dynamics with GitHub and JIRA” template are good starting points.

templates

 

Prediction models for error proneness

blogpicture1

This graph demonstrates the error proneness predictions for a typical open source project. In this case, a zookeeper project is being analyzed. The center of the circle is the root of the repo. Progressing outwards, you can see the probabilities of error for different directories and files. The center represents the computed error probability. The redness of individual blocks shows the relative probabilities. This graph gives you an at-a-glance understanding of error probabilities for your projects.

 

Team interaction graphs

blogpicture2

These graphs represent the interactions of code additions and deletions across your project. From these graphs, you can get a quick understanding of the changes that are being made and who is making those changes. My team uses this graph at the end of sprint to understand the changes that are occurring. The graph also helps to generate the right discussion among team members. At a higher level, I can see the changes at a macro level and look for areas where I need people to become skilled in an area.

 

Tracking code coverage, tests, and scans to determine deployment risk

blogpicture3

When you’re faced with the decision to deploy updates to production, you need a place where you can quickly see whether any of your policies were violated. In this case, you can see that the coverage of testing does not meet the defined policy. You can set up gates in both Jenkins and Delivery Pipeline to stop deployments when policies are not followed.

I hope these insights can help your development team improve its overall process. My team summarizes some of these insights into a set of development practices that are a good place to start looking for improvements.

More DevOps stories
May 1, 2019

Two Tutorials: Plan, Create, and Update Deployment Environments with Terraform

Multiple environments are pretty common in a project when building a solution. They support the different phases of the development cycle and the slight differences between the environments, like capacity, networking, credentials, and log verbosity. These two tutorials will show you how to manage the environments with Terraform.

Continue reading

April 29, 2019

Transforming Customer Experiences with AI Services (Part 1)

This is an experience from a recent customer engagement on transcribing customer conversations using IBM Watson AI services.

Continue reading

April 26, 2019

Analyze Logs and Monitor the Health of a Kubernetes Application with LogDNA and Sysdig

This post is an excerpt from a tutorial that shows how the IBM Log Analysis with LogDNA service can be used to configure and access logs of a Kubernetes application that is deployed on IBM Cloud.

Continue reading