Analytics, Artificial Intelligence, Big Data and BI
Applying AI and ML to Improve DevOps
In the recent past, several organizations have adopted DevOps to bring software development and operations teams closer with an objective of simplifying and enhancing organization’s deployment and release processes.
DevOps focuses on automation of delivery and deployment of process specific tasks. The emphasis is on automating and monitoring various activities involved in software delivery process in order to improve the speed and quality of delivering the software.This makes Artificial Intelligence (AI) and Machine Learning (ML) a close fit for DevOps. AI and ML can process large amounts of data and help perform tedious repeatable tasks, allowing the IT staff to do more productive work. AI/ ML can pick up patterns, predict issues and recommend solutions.
Following are a few key areas where AI and ML can improve DevOps:
a. Interpret data across platforms and tools
DevOps teams use various tools/ technologies including the likes of Dockers, Git, Kubernetes, Puppet & Jenkins. For complex applications, as the deployment environments get more intricate teams tend to use multiple tools for monitoring application’s performance. ML applications can use data coming from such tools to find co-relations and provide actionable view of application’s overall health.
b. Software Testing/ Quality Assurance
AI/ML could be applied to additional stages of the development lifecycle to enable enhancements to the overall DevOps methodology. The area of software testing could benefit the most. At each stage of testing like unit testing, regression testing, functional testing, integration testing and UAT (user acceptance testing) fairly large amounts of data is generated in the form of test results. AI or ML algorithms could be applied to these test results to detect patterns of poor coding practices that result in higher errors caught during these tests. These patterns could be fed back into the development team to improve their coding efficiencies thereby improving the application/ product quality. Such an AI/ML engine could help developers in building the most efficient and highest-quality application/ product.
c. Manage A Wave of Alerts
While using DevOps it is vital to have an alert system that identifies a flaw quickly. Under typical scenarios such alerts keep coming fast, while most if not all labelled with the same severity, making it difficult for teams to react. ML applications could help teams prioritize their responses based on factors such as past behaviour, extent of the current alert and source the alerts are coming from. Leveraging historical data, AI/ML could be applied to fine-tune deployment strategies as well, when applications are moved from Dev to Test and from Test to Production environments.
Python is one of the most preferred scripting languages for AI/ML as well as for Devops. A vast variety of Python libraries allow developer to write scripts for the improved development life cycle. Python automation scripts are platform-independent and support multi-tool integration, which makes Python a better option. Python’s OpenStack modules deal with all the operations in the public and private clouds. Testing frameworks like Selenium can be used for automation testing. One can set some useful functions or properties dynamically by writing a python script using the Git API module that interacts with the version control system.
At Aress we have been helping a number of our customer organizations with AI/ ML applications to improve DevOps and related activities.