Technology Transformation - How does engineering fit into AIDevOps?
The following article is part of our Ratings Technology - Technology Transformation Series in 2021. My colleagues will be providing their perspectives and experiences with a focus on returning capacity in the areas of AI/ML, Quality, CICDCT, Application Rationalization and Data Fabric. If you’d like to find out more about our cultural transformation journey check out the articles via this link.
Ratings Technology’s path to AI/ML Inline Innovation is “to develop an AI/ML Ecosystem for Ratings Technologist to design, develop, and deploy AI/ML capabilities to augment and enhance our DevOps Processes, Products and Services with a primary focus on returning capacity (efficiency play)”. The AI/ML Ecosystem provides an efficient platform for Ratings Technologist to vet and/or implement capacity returning opportunities governed by Ratings Product Engineering’s key objectives
- Strangulate legacy monolith applications
- Build with a “Quality First mentality”
- Automate and improve adoption of engineering standards
Applying the foundations for AIDevOps to product engineering
Last month, my colleague from architecture team mentioned the adoption of tools and frameworks that use AIML to help improve developer experience and DevSecOps.
Our objective is to shift testing left which is depicted in the diagram above. This would help development teams catch potential defects earlier when it is less expensive to correct. In this article we shall discuss the role of AI DevOps tools in the left most portions of the cycle i.e. CODE (Develop), BUILD (CI) and TEST(Unit Testing) to help meet the following key engineering objectives.
Strangulate legacy monolith applications
As with several enterprises we at S&P Ratings Technology have a large number of legacy applications built in several languages and platforms. Many of these are Java based applications using frameworks such as Spring, Hibernate etc. Some of these legacy codebases are very old and not well covered by unit test cases. There are SCRUM teams that maintain these who may or may not be the original developers of the legacy applications. In such a situation, if a team is asked to support the application ( break into components for strangulation ), they need to invest significant amount of time to study the code and refactor or enhance it. These changes could also be dictated by needs to enhance security (upgrade older frameworks) and/or to possibly fix issues as and when reported.
Build with a “Quality First mentality”
As best practices go, one of the key standards that all teams aspire to achieve is 100%-unit test coverage for the applications they build. If a codebase is well covered in terms of unit tests upfront, a developer's confidence tends to be higher while making changes to the code even if they may not have built it. However, what if one began with a codebase which for historic reasons did not have much unit testing coverage to begin with? Then one would need to write all of those from scratch which can take up significant time and effort. Given that some of the legacy applications are large, sometimes tightly coupled "monoliths", this could entail several months of time and effort.
Automate and improve adoption of engineering standards
One of our key engineering standards is conducting code reviews and automating test coverage reporting during the CI build process to help ensure we have a good amount of code coverage when a story is developed and checked into the code repository. Although we can accommodate reporting quite easily, what if there were a way to have a product “review” the current behavior of code that compiles, and can generate a complete unit testing suite without interfering with any of the developer written unit tests just as a second layer of a shift left quality check? What if this tool could actually improve upon the current code coverage especially for less complex standard Java constructs without requiring human time and effort? Would it help such a development team invest the saved capacity into writing either more code for new user stories and/or concentrating on improving the more complex logic for unit tests that cannot be fathomed as yet by Artificial Narrow Intelligence?
How does AIDevOps help achieve the above objectives?
There are two ways to consider AI uses cases i.e., building in house if needed or exploring products in the market to see if they meet our needs. On doing some research it was found that for product engineers and developers there are AI tools available for consideration. E.g., “AI for code” being studied at Oxford university have released a tool that internally uses reinforcement learning to help augment the efforts of Java developers to write junit test cases.
In order to evaluate the potential of the AI tool, product engineers from interested teams conducted test runs on a few applications of varying complexity, types, age and different starting points of unit testing coverage. Below is the data captured:
As a tool augmenting developer endeavors, it was found that the AI tool could generate working junits relatively quickly, which could then be reviewed and accepted/rejected by the code owner ( developer ) saving the team time during the development cycle ( code, build, unit test ).
Conclusion – How does engineering benefit from AIDevOps?
Transforming legacy applications i.e., breaking down monoliths into micro-front ends and micro-services, hosted on cloud based server-less platforms, though intriguing and exciting, may tend to be quite challenging and time consuming as well. In order to improve the pace of transformation, automation is the key and AI is “automation on steroids”. Products such as diffblue can help make the transformation process for developers a bit more efficient and help return capacity by reducing time required to write unit tests and eventually help catch bugs early through fully automated unit testing regression suites once the tool is fully matured and adopted into CI pipelines.
Besides adopting AI based tools, enthusiastic engineers are encouraged to think in terms of business workflows that legacy applications currently implement that could potentially be automated using AI models and implemented using ML Flow.
Our May AI/ML Technology Transformation article will focus on the ‘What tools enable AI/DevOps?’ – Connect or Follow Arpit Jain to learn more.
#technologytransformation #ratingstechnology #ratingstechplaylist
Very good article Utsav - I don't think AI is frequently looked at through this lens, but the advantages are clear (as you've highlighted). Wins in this space will make difficult transformations possible. Thank you for highlighting this.