IP Library › Granted Patent US 11,132,226
Granted Patent B2
US 11,132,226 · App. 16/734,028 · Granted Sep 28, 2021

Parallel resource provisioning

Inventors: Sagar Jadhav (Pune, IN); Hugh Edward Hockett (Raleigh, NC)
Assignee: International Business Machines Corporation
G06F9/5005G06F8/60G06F2209/505
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,132,226
App. No.
16/734,028
Filed
Jan 3, 2020
Granted
Sep 28, 2021
Kind
B2
Art Unit
2195
USPC
718/104
Abstract

Computer-implemented methods, systems and computer program products that leverage infrastructure code (IaC) to provision applications in a computing environment as virtual resources. A plurality of containers operating parallel to one another process resource provisioning requests. A central application provisioner orchestrates the containerized provisioning of resources using IaC. Application provisioner introspects IaC templates defining the provisioning request and creates a graph of the templates, mapping requested resources to containers based on the specification of the containers available. Application provisioner spins up idle containers and distributes resource provisioning tasks amongst the idle containers. An idle container provisions an assigned resource and outputs individual state information describing the provisioned resource. Application provisioner aggregates the individual state information from the containers into a completed state file describing the provisioned application and deploys the provisioned application. Provisioned resources can be destroyed by deprovisioning the resource from the assigned container and outputting modified state information.

Claims (66)

1. A computer-implemented method comprising:

performing, by an application provisioner, introspection of a template comprising infrastructure as code (“IaC”);

preparing, by the application provisioner, a graph describing the template based on the introspection of the template and mapping resources requested by the template to specifications of one of more containers configured to provision the resources mapped to the template;

assigning, by the application provisioner, provisioning tasks to a cluster of containers comprising at least two containers, wherein a first container receives a first provisioning task dedicated to provisioning a first resource and a second container receives a second provisioning task dedicated to provisioning a second resource;

receiving, by the application provisioner, a first output from the first container comprising a first state information describing deployment of the first resource provisioned by the first container;

receiving, by the application provisioner, a second output from the second container comprising a second state information describing deployment of the second resource provisioned by the second container;

combining, by the application provisioner, state information from the cluster of containers, including the first state information outputted by the first container, and the second state information outputted by the second container, into a state file aggregating the state information from the at least two of a plurality of containers assigned the provisioning tasks into a complete state of a provisioned application; and

deploying, by the application provisioner, the provisioned application.

2. The computer-implemented method of claim 1 , wherein the introspection of the template determines whether one or more resources are dependent upon a separate resource.

3. The computer-implemented method of claim 2 , wherein non-dependent resources are provisioned by separate containers and resources dependent upon one another are provisioned by a single container.

4. The computer-implemented of claim 2 , comprising:

determining, by the application provisioner, that provisioning a third resource is dependent upon provisioning the second resource;

assigning, by the application provisioner, a third provisioning task to the second container, wherein the third provisioning task is dedicated to provisioning the third resource; and

receiving, by the application provisioner, a third output from the second container comprising a third state information describing deployment of the third resource provisioned by the second container.

5. The computer-implemented method of claim 1 , wherein the introspection further comprises determining a number of new containers to spin up to meet requirements of the provisioning tasks, in order to assign one container to each resource being provisioned.

6. The computer-implemented method of claim 3 , wherein the introspection predicts container specification required by the single container to provision the resources dependent upon one another.

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

receiving, by the application provisioner, a second template comprising a script for deprovisioning one or more provisioned resources;

performing, by the application provisioner, introspection of the second template;

preparing, by the application provisioner, a second graph mapping provisioned resources to one or more containers responsible for provisioning the provisioned resources; and

assigning, by the application provisioner, deprovisioning tasks to selected containers responsible for provisioning the provisioned resources being deprovisioned.

8. A computer system comprising:

at least one processor; and

a computer-readable storage media coupled to the at least one processor, wherein the computer-readable storage media contains program instructions executing a computer-implemented method comprising:

performing, by an application provisioner, introspection of a template comprising infrastructure as code (“IaC”);

preparing, by the application provisioner, a graph describing the template based on the introspection of the template and mapping resources requested by the template to specifications of one of more containers configured to provision the resources mapped to the template;

assigning, by the application provisioner, provisioning tasks to a cluster of containers comprising at least two containers, wherein a first container receives a first provisioning task dedicated to provisioning a first resource and a second container receives a second provisioning task dedicated to provisioning a second resource;

receiving, by the application provisioner, a first output from the first container comprising a first state information describing deployment of the first resource provisioned by the first container;

receiving, by the application provisioner, a second output from the second container comprising a second state information describing deployment of the second resource provisioned by the second container;

combining, by the application provisioner, state information from the cluster of containers, including the first state information outputted by the first container, and the second state information outputted by the second container, into a state file aggregating the state information from the at least two of a plurality of containers assigned the provisioning tasks into a complete state of a provisioned application; and

deploying, by the application provisioner, the provisioned application.

9. The computer system of claim 8 , wherein the introspection of the template determines whether one or more resources are dependent upon a separate resource.

10. The computer system of claim 9 , wherein non-dependent resources are provisioned by separate containers and resources dependent upon one another are provisioned by a single container.

11. The computer system of claim 9 , further comprising:

determining, by the application provisioner, that provisioning a third resource is dependent upon provisioning the second resource;

assigning, by the application provisioner, a third provisioning task to the second container, wherein the third provisioning task is dedicated to provisioning the third resource; and

receiving, by the application provisioner, a third output from the second container comprising a third state information describing deployment of the third resource provisioned by the second container.

12. The computer system of claim 8 , wherein, the introspection further comprises a determining a number of new containers to spin up to meet requirements of the provisioning tasks, in order to assign one container to each resource being provisioned.

13. The computer system of claim 10 , wherein the introspection predicts container specification required by the single container to provision the resources dependent upon one another.

14. The computer system of claim 8 , further comprising:

receiving, by the application provisioner, a second template comprising a script for deprovisioning one or more provisioned resources;

performing, by the application provisioner, introspection of the second template;

preparing, by the application provisioner, a second graph mapping provisioned resources to one or more containers responsible for provisioning the provisioned resources; and

assigning, by the application provisioner, deprovisioning tasks to selected containers responsible for provisioning the provisioned resources being deprovisioned.

15. A computer program product comprising:

one or more computer-readable storage media having computer-readable program instructions stored on the one or more computer-readable storage media said program instructions executes a computer-implemented method comprising:

performing, by an application provisioner, introspection of a template comprising infrastructure as code (“IaC”);

preparing, by the application provisioner, a graph describing the template based on the introspection of the template and mapping resources requested by the template to specifications of one of more containers configured to provision the resources mapped to the template;

assigning, by the application provisioner, provisioning tasks to a cluster of containers comprising at least two containers, wherein a first container receives a first provisioning task dedicated to provisioning a first resource and a second container receives a second provisioning task dedicated to provisioning a second resource;

receiving, by the application provisioner, a first output from the first container comprising a first state information describing deployment of the first resource provisioned by the first container;

receiving, by the application provisioner, a second output from the second container comprising a second state information describing deployment of the second resource provisioned by the second container;

combining, by the application provisioner, state information from the cluster of containers, including the first state information outputted by the first container, and the second state information outputted by the second container, into a state file aggregating the state information from the at least two of a plurality of containers assigned the provisioning tasks into a complete state of a provisioned application; and

deploying, by the application provisioner, the provisioned application.

16. The computer program product of claim 15 , wherein the introspection of the template determines whether one or more resources are dependent upon a separate resource.

17. The computer program product of claim 16 , wherein non-dependent resources are provisioned by separate containers and resources dependent upon one another are provisioned by a single container.

18. The computer program product of claim 16 , comprising:

determining, by the application provisioner, that provisioning a third resource is dependent upon provisioning the second resource;

assigning, by the application provisioner, a third provisioning task to the second container, wherein the third provisioning task is dedicated to provisioning the third resource; and receiving, by the application provisioner, a third output from the second container comprising a third state information describing deployment of the third resource provisioned by the second container.

19. The computer program product of claim 17 , wherein the introspection further comprises:

determining a number of new containers to spin up to meet requirements of the provisioning tasks, in order to assign one container to each resource being provisioned; and

predicting container specification required by the single container to provision the resources dependent upon one another.

20. The computer program product of claim 15 , further comprising:

receiving, by the application provisioner, a second template comprising a script for deprovisioning one or more provisioned resources;

performing, by the application provisioner, introspection of the second template;

preparing, by the application provisioner, a second graph mapping provisioned resources to one or more containers responsible for provisioning the provisioned resources; and

assigning, by the application provisioner, deprovisioning tasks to selected containers responsible for provisioning the provisioned resources being deprovisioned.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2020
From: JADHAV, SAGAR; HOCKETT, HUGH EDWARD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 051413/0219 →
Continuity (1)
Related Publication 20210208934A1 · Jul 8, 2021
Cited By (4)
US 12,250,221 US 12,596,353 US 12,632,282 US 12,652,316