Application modernization is the process of refactoring a monolith application (also referred to as a monolithic application) into standalone microservices. The traditional monolith enterprise application is designed with complex and intertwining presentation, business process, and data models. They are difficult to maintain and change. A microservice is a loosely coupled standalone application encapsulating a small set of functionalities and interacts with other applications through a publicly described interface. Therefore, they are much easier to be updated, scaled, maintained and deployed to a cloud computing environment.
Some existing application modernization technologies apply a static code analysis-based approach to generate microservices from a monolithic application. Such a static code analysis-based approach analyzes source which provides a comprehensive view of the call relations. A problem with such a static code analysis-based approach is that it does not capture the call relations and interaction frequencies under specific workloads and inputs.
Some existing application modernization technologies apply a meta-data-based approach to generate microservices from a monolithic application. Such a meta-data-based approach relies on design documents such as, for example, data-flow diagrams, software artifacts, code base change history, and/or another design document. A problem with such a meta-data-based approach is that the design documents defined above are not always available and accessible.