The need for speed in the business world is increasing by the day. The reality today is that our supply chains, customer value chains and related backend processes are being pushed to the limit trying to adapt to a rapidly evolving situation that demands dynamic responses, sometimes in real time. This means that the IT systems supporting the business processes also need to change and evolve at a radically quicker pace. Software development that took months earlier will now have to be executed in weeks by distributed teams collaborating using DevOps and Agile methodologies.
Artificial Intelligence (AI) has shown the potential to transform not only every aspect of client business processes but also the underlying software development and maintenance methodology, which is already being streamlined using DevOps. AI and Machine Learning (ML) can capture data generated from various software engineering and CI/CD tools, create models, detect patterns to predict failures and provide remediation resulting in self-driving and self-healing applications.
Let us look at how different stages of DevOps can benefit from AI:
Speed of delivery of new features, quick turnaround of issues and consequent end user satisfaction are the key benefits of DevOps. Continuous planning ensures that inputs are received in the form of user feedback and trouble tickets, surveys and market/ competitor analysis are constantly evaluated, converted into use stories, and eventually moved to release backlog. Natural Language Processing (NLP) can be leveraged to interpret feedback that may come in the form of voice messages, calls, emails, comments on the website, etc. to better capture the requirement, context and even the sentiment behind it. Further, inputs from different sources can be summarized to provide insights to the product owner and other business stakeholders. These insights will serve to help product/ application teams prioritize and plan features for subsequent sprints and releases.
This step involves integrating code from various developers and generating automated incremental builds on a regular basis to minimize risk. NLP can be leveraged to trigger builds on demand and also send customized alerts and notifications in cases of issues or failures. Further, historical data from previous code commits, builds and generated logs can be analyzed to understand patterns to avoid similar pitfalls in future. Other activities that can benefit from AI during CI process are Static Analysis and Unit Testing. Once these tasks are triggered and completed in the background, their results can be fed into conversation engines, which can then summarize them and use Natural Language Generation (NLG) to guide developers to improve the quality of code prior to testing.
AI and cognitive technologies can be applied in the testing process to handle the lifecycle of defects. For example, during exploratory testing, test engineers can be augmented with smart assistants to classify defects and detect any duplicates. This can significantly accelerate the defect triaging process, which is otherwise time consuming. Similarly, for failed tests, logs can be analyzed to uncover recurring patterns, which can be used to train and create models to predict causes of future test failures and preventive mechanisms can be put in place in addition for auto-correction of known issues.
Even in current applications, where a large number of manual tests already exist, NLP can be applied to convert test cases into scripts that can be directly consumed by common automated testing tools like Selenium.
Further, similar tests can be grouped together into clusters to reduce test execution effort. Patterns can also be extracted for tests/suites that fail often based on specific changes done to the system. Such correlations can be established to optimize regression tests over time.
When it comes to deployment management, technology has already played a major role in automating this process from manually running the scripts in a sequential manner to a one-click multi-stage automated deployment. Nevertheless, failed deployments or suboptimal performance of new releases remains a problem for many organizations, which can be very costly in terms of lost time and revenues.
AI can play a major role here in handling complexity of deployments and reducing deployment failures. For instance, ontologies of assets can be created for QA, Staging and Prod environments using a combination of SME knowledge and network service discovery tools. System and app logs generated during past deployments can be stored, parsed and analyzed along with elements in the ontology to predict possible failures in upcoming deployments. These predictions can be compared with actual deployment outcomes to facilitate identification of new patterns based on which learnings can be applied to eliminate causes of future deployment failures.
Continuous monitoring and feedback
Monitoring production releases of deployed applications allow product owners and development teams to gain knowledge about how the new application is being used for its intended purpose. Vast amounts of data in the form of alerts, incidents, logs, events and metrics is generated in production from the applications, middleware, databases, servers, devices and other network components.
AI can help in generating insights from this large dataset by creating ML models using a combination of supervised and unsupervised learning during normal production runs. The trained models can help in identifying anomalous behavior which can be the cause of potential vulnerabilities. To obtain explicit feedback instead of text-based online support and surveys, which may otherwise be ignored by most users, voice-based interactive conversations can be deployed to seek timely inputs and provide guided help. The feedback and user inputs can be analyzed to perform Sentiment analysis to better understand overall user experience with the application or product.
Taking DevOps to the next level
AI is already playing a transformational role today across industries that are enabled by IT. Now it promises to make software development and related operational processes that comprise the DevOps movement more intelligent by replicating aspects of human behavior, improving team velocity and eliminating human errors.
Through a combination of ML, NLP, pattern recognition, and decision-making, AI can unleash a new phase of evolution for DevOps practices, significantly improve adoption and workforce productivity, and eventually, help us realize the seemingly unattainable goal of self-learning autonomous systems in software development and maintenance.