IP Library › Granted Patent US 11,842,221
Granted Patent B2
US 11,842,221 · App. 18/086,455 · Granted Dec 12, 2023

Techniques for utilizing directed acyclic graphs for deployment instructions

Inventors: Nathaniel Martin Glass (Bellevue, WA); Gregory Mark Jablonski (Seattle, WA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F9/5061G06F3/0484G06F8/60G06F8/71G06F9/3836G06F9/4411G06F9/44505G06F9/451G06F9/485G06F9/4856G06F9/505G06F9/5011G06F9/5022G06F9/5027G06F9/5038G06F9/5072G06F9/5077G06F11/0757G06F11/1469G06F11/327G06F11/3664G06F11/3684G06F16/9024H04L41/0806H04L41/0816H04L41/5041H04L41/5048H04L41/5054H04L41/5096H04L67/10H04L67/1008H04L67/1031H04L67/34H04L67/566G06F8/61G06F11/0709G06F11/0751G06F11/0793
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,842,221
App. No.
18/086,455
Granted
Dec 12, 2023
Kind
B2
Abstract

Techniques are disclosed for utilizing directed acyclic graphs for deployment instructions. A computer-implemented method can include various operations. Instructions may be executed by a computing device to perform parses of configuration data associated with deploying one or more services to various execution targets. The computing device may cause a first graph to be generated that indicates dependencies between tasks associated with deploying the service(s). A second graph may be generated that specifies dependencies between different deployments of the service(s) to the execution target(s). Services may be deployed based on traversing the first and second graph.

Claims (61)

1. A computer-implemented method, comprising:

performing, by a computing device, one or more parses of a set of one or more configuration files that are individually associated with respective services of a plurality of services to be deployed to a plurality of execution targets of a cloud computing environment;

generating, by the computing device, a first graph for deploying the plurality of services to an execution target of the plurality of execution targets of the cloud computing environment, the first graph being generated based at least in part on performing the one or more parses of the configuration file, the first graph indicating dependencies between tasks associated with deploying the plurality of services to the execution target;

generating, by the computing device, a second graph for deploying the plurality of services to the plurality of execution targets based at least in part on performing the one or more parses of the configuration file, the plurality of execution targets comprising the execution target, the second graph specifying respective dependencies associated with different deployments of the plurality of services to each of the plurality of execution targets; and

deploying, by the computing device, the plurality of services to the plurality of execution targets based at least in part on traversing the first graph and the second graph.

2. The computer-implemented method of claim 1 , wherein the computing device executes a cloud infrastructure orchestration service configured to provision infrastructure resources and to deploy services to the infrastructure resources based at least in part on the set of one or more configuration files, the set of one or more configuration files collectively describing, via declarative instructions, the infrastructure resources to be provisioned and the services to be deployed.

3. The computer-implemented method of claim 1 , wherein the first graph and the second graph are directed acyclic graphs, wherein the first graph specifies a dependency of a first resource on a capability of a second resource, and wherein the first resource and the second resource are each a respective service of the plurality of services, and wherein the capability is a portion of functionality of the second resource.

4. The computer-implemented method of claim 1 , further comprising generating, by the computing device, a linked list data structure based at least in part on performing the one or more parses of the set of one or more configuration files, the linked list data structure specifying additional dependencies between a plurality of deployment phases, each phase being associated with a different set of execution targets to which the plurality of services are to be deployed.

5. The computer-implemented method of claim 4 , wherein a node of the linked list data structure references at least one node of the second graph, and wherein at least one node of the second graph references a node of the first graph.

6. The computer-implemented method of claim 5 , wherein deploying the plurality of services to the plurality of execution targets further comprises:

traversing to a first node of the linked list data structure;

identifying the second graph from the first node of the linked list data structure;

traversing to a first node of the second graph;

identifying the first graph from the first node of the second graph;

traversing to a first node of the first graph; and

deploying at least a portion of a first service of the plurality of services based at least in part on traversing to the first node of the linked list data structure, traversing to the first node of the second graph, and traversing to the first node of the first graph.

7. The computer-implemented method of claim 6 , further comprising:

identifying, based at least in part on traversing to a second node of the first graph, that a portion of a second service to be deployed is dependent on a capability of a third service being available;

identifying that the capability of the third service is unavailable; and

delaying deployment of the portion of the second service until the capability of the third services is available.

8. A computing device, comprising:

one or more processors; and

one or more memories storing computer-executable instructions that, when executed by the one or more processors, cause the computing device to:

perform one or more parses of a set of one or more configuration files that are individually associated with respective services of a plurality of services to be deployed to a plurality of execution targets of a cloud computing environment;

generate a first graph for deploying the plurality of services to an execution target of the plurality of execution targets of the cloud computing environment, the first graph being generated based at least in part on performing the one or more parses of the configuration file, the first graph indicating dependencies between tasks associated with deploying the plurality of services to the execution target;

generate a second graph for deploying the plurality of services to the plurality of execution targets based at least in part on performing the one or more parses of the configuration file, the plurality of execution targets comprising the execution target, the second graph specifying dependencies associated with different deployments of the plurality of services to each of the plurality of execution targets; and

deploy the plurality of services to the plurality of execution targets based at least in part on traversing the first graph and the second graph.

9. The computing device of claim 8 , wherein executing the computer-executable instructions further causes the computing device to execute a cloud infrastructure orchestration service configured to provision infrastructure resources and to deploy services to the infrastructure resources based at least in part on the set of one or more configuration files, the set of one or more configuration files collectively describing, via declarative instructions, the infrastructure resources to be provisioned and the services to be deployed.

10. The computing device of claim 8 , wherein the first graph specifies a dependency of a first resource on a capability of a second resource, and wherein the first resource and the second resource are each a respective service of the plurality of services, and wherein the capability is a portion of functionality of the second resource.

11. The computing device of claim 8 , wherein executing the computer-executable instructions further causes the computing device to generate a linked list data structure based at least in part on performing the one or more parses of the set of one or more configuration files, the linked list data structure specifying dependencies between a plurality of deployment phases, each phase being associated with a different set of execution targets to which the plurality of services are to be deployed.

12. The computing device of claim 11 , wherein a node of the linked list data structure references at least one node of the second graph, and wherein at least one node of the second graph references a node of the first graph.

13. The computing device of claim 12 , wherein deploying the plurality of services to the plurality of execution targets further comprises:

traversing to a first node of the linked list data structure;

identifying the second graph from the first node of the linked list data structure;

traversing to a first node of the second graph;

identifying the first graph from the first node of the second graph;

traversing to a first node of the first graph; and

deploying at least a portion of a first service of the plurality of services based at least in part on traversing to the first node of the linked list data structure, traversing to the first node of the second graph, and traversing to the first node of the first graph.

14. The computing device of claim 13 , wherein executing the computer-executable instructions further causes the computing device to:

identify, based at least in part on traversing to a second node of the first graph, that a portion of a second service to be deployed is dependent on a capability of a third service being available;

identify that the capability of the third service is unavailable; and

delay deployment of the portion of the second service until the capability of the third services is available.

15. A non-transitory computer-readable medium storing computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

performing one or more parses of a set of one or more configuration files that are individually associated with respective services of a plurality of services to be deployed to a plurality of execution targets of a cloud computing environment;

generating a first graph for deploying the plurality of services to an execution target of the plurality of execution targets of the cloud computing environment, the first graph being generated based at least in part on performing the one or more parses of the configuration file, the first graph indicating dependencies between tasks associated with deploying the plurality of services to the execution target;

generating a second graph for deploying the plurality of services to the plurality of execution targets based at least in part on performing the one or more parses of the configuration file, the plurality of execution targets comprising the execution target, the second graph specifying dependencies associated with different deployments of the plurality of services to each of the plurality of execution targets; and

deploying the plurality of services to the plurality of execution targets based at least in part on traversing the first graph and the second graph.

16. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise executing a cloud infrastructure orchestration service configured to provision infrastructure resources and to deploy services to the infrastructure resources based at least in part on the set of one or more configuration files, the set of one or more configuration files collectively describing, via declarative instructions, the infrastructure resources to be provisioned and the services to be deployed.

17. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise generating a linked list data structure based at least in part on performing the one or more parses of the set of one or more configuration files, the linked list data structure specifying dependencies between a plurality of deployment phases, each phase being associated with a different set of execution targets to which the plurality of services are to be deployed.

18. The non-transitory computer-readable medium of claim 17 , wherein a node of the linked list data structure references at least one node of the second graph, and wherein at least one node of the second graph references a node of the first graph.

19. The non-transitory computer-readable medium of claim 18 , wherein deploying the plurality of services to the plurality of execution targets further comprises:

traversing to a first node of the linked list data structure;

identifying the second graph from the first node of the linked list data structure;

traversing to a first node of the second graph;

identifying the first graph from the first node of the second graph;

traversing to a first node of the first graph; and

deploying at least a portion of a first service of the plurality of services based at least in part on traversing to the first node of the linked list data structure, traversing to the first node of the second graph, and traversing to the first node of the first graph.

20. The non-transitory computer-readable medium of claim 19 , wherein the operations further comprise:

identifying, based at least in part on traversing to a second node of the first graph, that a portion of a second service to be deployed is dependent on a capability of a third service being available;

identifying that the capability of the third service is unavailable; and

delaying deployment of the portion of the second service until the capability of the third services is available.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2023
From: GLASS, NATHANIEL MARTIN; JABLONSKI, GREGORY MARK
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062289/0138 →
Continuity (13)
Continuation 16953262 · Nov 19, 2020
Provisional Application 62963452 · Jan 20, 2020
Provisional Application 62963481 · Jan 20, 2020
Provisional Application 62963477 · Jan 20, 2020
Provisional Application 62963478 · Jan 20, 2020
Provisional Application 62963335 · Jan 20, 2020
Provisional Application 62963480 · Jan 20, 2020
Provisional Application 62963486 · Jan 20, 2020
Provisional Application 62963491 · Jan 20, 2020
Provisional Application 62963413 · Jan 20, 2020
Provisional Application 62963489 · Jan 20, 2020
Provisional Application 62963456 · Jan 20, 2020
Related Publication 20230119331A1 · Apr 20, 2023
Cited By (9)
US 12,602,230 US 12,619,480 US 12,639,054 US 12,663,995 US 12,688,019 US 12,705,034 US 12,705,060 US 12,717,561 US 12,749,141