Reconfiguring application software into microservice architecture
AssigneeInternational Business Machines Corporation
InventorsGireesh Punathil, Vijayalakshmi Kannan, Deepthi Sebastian
Life of this patent
Estimating the term…
Abstract
An automated method extracts the topology of a software application, identifies static and runtime internal code flow, data flow, dependencies, accessibility, reachability, and resource consumption characteristics of the application. The method identifies code refactoring boundaries, and helps to adapt and/or re-configure the software application into a set of microservices for deployment in a cloud environment.
Claims20
A computer-implemented method comprising:
- receiving a software application comprising a plurality of code blocks, including a first code block and a second code block;
- semantically parsing, in conjunction with statically analyzing, in a recursive depth-first-search manner, the plurality of code blocks of the software application, to generate an abstract topology model of the software application where the abstract topology model has a first node and a second node respectively corresponding to the first code block and the second code block;
- determining, with respect to interrelationships among and between the plurality of code blocks:
- (i) a dependency information;
- (ii) a reachability information, and (iii) an accessibility information;
- determining, respectively, a plurality of resource consumption profiles for each of the plurality of code blocks, including a first resource consumption profile corresponding to the first code block and a first resource;
- generating an architectural model of the software application, based on a combination of:
- (i) the abstract topology model, (ii) the dependency information, (iii) the accessibility information, (iv) the reachability information, and (v) the first resource consumption profile;
- and
- restructuring the software application into a plurality of microservices based, at least in part, on the architectural model.
A computer program product comprising a computer readable storage medium having stored thereon program instructions programmed to perform:
- receiving a software application comprising a plurality of code blocks, including a first code block and a second code block;
- semantically parsing, in conjunction with statically analyzing, in a recursive depth-first-search manner, the plurality of code blocks of the software application, to generate an abstract topology model of the software application where the abstract topology model has a first node and a second node respectively corresponding to the first code block and the second code block;
- determining, with respect to interrelationships among and between the plurality of code blocks:
- (i) a dependency information;
- (ii) a reachability information, and (iii) an accessibility information;
- determining, respectively, a plurality of resource consumption profiles for each of the plurality of code blocks, including a first resource consumption profile corresponding to the first code block and a first resource;
- generating an architectural model of the software application, based on a combination of:
- (i) the abstract topology model, (ii) the dependency information, (iii) the accessibility information, (iv) the reachability information, and (v) the first resource consumption profile;
- and
- restructuring the software application into a plurality of microservices based, at least in part, on the architectural model.
A computer system comprising:
- a processor set;
- and
- a computer readable storage medium;
- wherein:
- the processor set is structured, located, connected and/or programmed to run program instructions stored on the computer readable storage medium;
- and
- the program instructions include instructions programmed to perform;
- receiving a software application comprising a plurality of code blocks, including a first code block and a second code block;
- semantically parsing, in conjunction with statically analyzing, in a recursive depth-first-search manner, the plurality of code blocks of the software application, to generate an abstract topology model of the software application where the abstract topology model has a first node and a second node respectively corresponding to the first code block and the second code block;
- determining, with respect to interrelationships among and between the plurality of code blocks:
- (i) a dependency information;
- (ii) a reachability information, and (iii) an accessibility information;
- determining, respectively, a plurality of resource consumption profiles for each of the plurality of code blocks, including a first resource consumption profile corresponding to the first code block and a first resource;
- generating an architectural model of the software application, based on a combination of:
- (i) the abstract topology model, (ii) the dependency information, (iii) the accessibility information, (iv) the reachability information, and (v) the first resource consumption profile;
- and
- restructuring the software application into a plurality of microservices based, at least in part, on the architectural model.
Dependencies are inferred from the claim text.