Refactoring Local Calls to Network Calls for Microservices
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Legacy monolithic computing applications face challenges in scalability, resource allocation, and modernization, requiring transformation into microservices to improve performance and agility, but this process is complex and inefficient due to the need for manual identification and extraction of independently deployable components.
Innovation Solution
A software modernization service that automatically detects 'islands' of independent code within monolithic applications, visualizes dependencies, and assists in breaking these dependencies to extract and deploy components as microservices, leveraging graph models and minimal code changes, facilitating the transition to microservices architecture.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If manual identification and extraction of independently deployable components is performed, then microservices can be created, but the process becomes complex and inefficient
Solution Approach 1:
The system performs self-analysis by automatically scanning the monolithic codebase, identifying component dependencies, and determining independently deployable units without requiring manual intervention. The code analysis engine autonomously generates extraction recommendations and facilitates the refactoring process.
Solution Approach 2:
Manual mechanical processes of code analysis and microservices identification are replaced with automated software systems. The code analysis engine uses programmatic approaches to parse, analyze, and understand code structures, substituting human manual inspection with automated computational analysis.
2Productivity
If manual code refactoring is performed to extract components, then independent services can be deployed, but engineering costs and time increase
Solution Approach 1:
The system performs preliminary analysis of the codebase before extraction, identifying all dependencies and potential extraction points in advance. The code analysis engine scans and maps the entire code structure upfront, preparing extraction recommendations that guide the refactoring process and minimize subsequent manual work.
Solution Approach 2:
An automated intermediary system (the code analysis engine and modernization service) is introduced between the monolithic codebase and the microservices extraction process. This intermediary automatically analyzes dependencies, identifies extraction boundaries, and generates the necessary refactoring code, reducing direct manual intervention.
3Measurement precision
If dependencies between code components are not analyzed, then extraction is faster, but incorrect components may be extracted
Solution Approach 1:
The code analysis engine implements feedback mechanisms by continuously analyzing code dependencies during the extraction process. It monitors calls, imports, and references between components, providing real-time information about dependency relationships to ensure accurate identification of independently deployable units.
Solution Approach 2:
Manual dependency analysis is replaced with automated code parsing and static analysis techniques. The system uses programmatic approaches to traverse code structures, analyze call graphs, and detect dependency relationships, substituting manual inspection with automated computational methods.
Data Source
AI summary
Disclosed are various embodiments for the refactoring of local calls to network calls during software modernization. First and second application components are identified based on analysis of a computing application. A local call from the first application component to a process of the second application component is identified, and an independently deployable microservice is created from the computing application. The independently deployable subunit comprises the second application component having a network endpoint. The independently deployable microservice is deployed such that the process is accessible to the first application component via the network endpoint. The local call is programmatically refactored into a network call from the first application component to the process of the second application component.


