IP Library › Granted Patent US 11,442,725
Granted Patent B1
US 11,442,725 · App. 17/110,726 · Granted Sep 13, 2022

Software modernization refactoring of local calls to network calls

Inventors: Vivek Chawda (Palo Alto, CA); Koushik Rajagopal (Milpitas, CA); Daniel John Scholl (San Ramon, CA); Roland Mesde (Cupertino, CA); Sophia Tsang (Newark, CA); Samartha Chandrashekar (Bellevue, WA); Sushil Ravoori (Fremont, CA); Sriram Venkatadri (Santa Clara, CA)
Assignee: Amazon Technologies, Inc.
G06F8/76G06F8/30G06F8/40G06F8/60G06F8/72G06F9/22
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,442,725
App. No.
17/110,726
Granted
Sep 13, 2022
Kind
B1
Abstract

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.

Claims (59)

1. A system, comprising:

at least one computing device comprising memory and a processor;

a modernization service stored in the memory and executable in the at least one computing device that when executed, directs the at least one computing device to:

identify first and second application components based on analysis of a monolithic computing application, wherein the first and second application components represent different portions of the monolithic computing application;

generate a graph model comprising a plurality of nodes and a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes, wherein individual ones of the nodes correspond to the first and second application components, and a respective one of the nodes is identified as being independently deployable based at least in part on a number of bridges connected to the respective one of the nodes being below a predetermined threshold;

identify a respective bridge connecting the first and second application components, wherein the respective bridge represents a local call from the first application component to a process of the second application component;

programmatically refactor the local call into a network call from the first application component to the process of the second application component by:

making the process accessible via a network endpoint in the second application component, and

replacing the local call in the first application component with a call to the network endpoint;

create a first microservice from the monolithic computing application, the first microservice comprising the first application component having the call to the network endpoint; and

create a second microservice from the monolithic computing application, the second microservice comprising the second application component having the network endpoint; and

a program execution service executable in the at least one computing device configured to deploy the first and second microservices such that the process is accessible to the first application component via the network endpoint.

2. The system of claim 1 , wherein replacing the local call in the first application component with the call to the network endpoint comprises performing a find and replace routine in source code or bytecode of the monolithic computing application.

3. The system of claim 1 , wherein making the process accessible via the network endpoint in the second application component comprises:

identify the local call as the call to a class or a method; and

modify source code or bytecode of the monolithic computing application to create network accessibility code around the call to the class or method.

4. A computer-implemented method, comprising:

identifying first and second application components based on analysis of a computing application, wherein the first and second application components represent different portions of the computing application;

generating a graph model comprising a plurality of nodes and a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes, wherein individual ones of the nodes correspond to the first and second application components, and a respective one of the nodes is identified as being independently deployable based at least in part on a number of bridges connected to the respective one of the nodes being below a predetermined threshold;

identifying a local call from the first application component to a process of the second application component;

creating an independently deployable subunit from the computing application, the independently deployable subunit comprising the second application component having a network endpoint;

deploying the independently deployable subunit such that the process is accessible to the first application component via the network endpoint; and

programmatically refactoring the local call into a network call from the first application component to the process of the second application component.

5. The computer-implemented method of claim 4 , wherein the independently deployable subunit is a microservice executed remotely from an execution environment of the computing application.

6. The computer-implemented method of claim 4 , wherein programmatically refactoring the local call comprises:

making the process accessible via the network endpoint in the second application component, and

replacing the local call in the first application component with a call to the network endpoint.

7. The computer-implemented method of claim 4 , further comprising deploying the independently deployable subunit such that the process is accessible to the first application component via the network endpoint.

8. The computer-implemented method of claim 4 , wherein creating the independently deployable subunit further comprises:

identifying a plurality of dependency relationships for the second application component; and

creating the independently deployable subunit based at least in part on the dependency relationships.

9. The computer-implemented method of claim 8 , wherein generating the independently deployable subunit based at least in part on the dependency relationships comprises:

extracting additional application components beyond the second application component, the second application component being dependent on the additional application components.

10. The computer-implemented method of claim 9 , wherein the additional application components extracted comprise at least one of: a class; a package file; and a library file.

11. The computer-implemented method of claim 9 , wherein generating the independently deployable subunit based at least in part on the dependency relationships further comprises:

generating a new application package file that is executable independent of the computing application.

12. The computer-implemented method of claim 4 , further comprising:

converting code corresponding to the second application component from a first format to a second format different than the first format, wherein the independently deployable subunit comprises the code in the second format.

13. The computer-implemented method of claim 4 , further comprising making the process accessible via the network endpoint in the second application component by:

identifying the local call as a call to a class or a method; and

modifying source code or bytecode of the computing application to create network accessibility code around the call to the class or method.

14. A non-transitory computer-readable medium comprising program instructions stored thereon that are executable by at least one computing device that, when executed, direct the at least one computing device to:

identify first and second application components based on analysis of a computing application, wherein the first and second application components represent different portions of the computing application;

generate a graph model comprising a plurality of nodes and a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes, the nodes corresponding to application components of the computing application, wherein a respective one of the nodes is identified as being independently deployable based at least in part on a number of bridges connected to the respective one of the nodes being below a predetermined threshold;

identify a local call from the first application component to a process of the second application component;

create an independently deployable microservice from the computing application, the independently deployable microservice comprising the second application component having a network endpoint;

deploy the independently deployable microservice such that the process is accessible to the first application component via the network endpoint; and

programmatically refactor the local call into a network call from the first application component to the process of the second application component.

15. The non-transitory computer-readable medium of claim 14 , wherein the at least one computing device is further directed to modify a source code file or a bytecode file of the computing application to remove the second application component.

16. The non-transitory computer-readable medium of claim 14 , wherein the independently deployable microservice is created by:

identifying a plurality of dependency relationships for the second application component;

generating the independently deployable microservice based at least in part on the dependency relationships; and

extracting additional application components beyond the second application component, the second application component being dependent on the additional application components,

wherein the independently deployable microservice is created based at least in part on the dependency relationships by generating a new application package file that is executable independent of the computing application.

17. The non-transitory computer-readable medium of claim 14 , wherein the at least one computing device is further directed to:

convert code corresponding to the second application component from a first format to a second format different than the first format, wherein the independently deployable microservice comprises the code in the second format.

18. The non-transitory computer-readable medium of claim 14 , wherein the at least one computing device is configured to make the process accessible via the network endpoint in the second application component by:

identifying the local call as a call to a class or a method; and

modifying source code or bytecode of the computing application to create network accessibility code around the call to the class or method.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2022
From: CHAWDA, VIVEK; RAJAGOPAL, KOUSHIK; SCHOLL, DANIEL JOHN; MESDE, ROLAND; TSANG, SOPHIA; CHANDRASHEKAR, SAMARTHA; RAVOORI, SUSHIL; VENKATADRI, SRIRAM
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 060171/0363 →
Cited By (6)
US 12,206,559 US 12,236,289 US 12,253,936 US 12,288,044 US 12,417,087 US 12,613,711