IP Library Granted Patent US 9,684,502
Granted Patent B2
US 9,684,502 · App. 14/749,531 · Granted Jun 20, 2017

Apparatus, systems, and methods for distributed application orchestration and deployment

Inventors: Tianying Fu (San Jose, CA); Saad Ali Malik (Milpitas, CA); Gautam Joshi (San Jose, CA); Abhinav Nagaraj (San Jose, CA)
Assignee: CLIQR TECHNOLOGIES, INC.
G06F8/61G06F8/60G06F9/45558H04L67/34G06F2009/45562
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 9,684,502
App. No.
14/749,531
Granted
Jun 20, 2017
Kind
B2
Abstract

Embodiments disclosed facilitate distributed orchestration and deployment of a cloud based distributed computing application. In some embodiments, the distributed orchestration may be based on a cloud agnostic representation of the application. In some embodiments, an ordered set of events may be obtained based on a starting sequence for the plurality of components, where each event in the ordered set is associated with a corresponding set of prerequisites for initiating execution of the event. Event identifiers corresponding to the ordered set of events may be placed on an event message bus with persistence that is shared between a plurality of distributed nodes associated with a cloud. Upon receiving an indication of completion of prerequisites for one or more events, a plurality of nodes of a distributed orchestration engine may select the one or more events corresponding to the one or more selected event identifiers for execution on the cloud.

Claims (76)

1. A processor-implemented method comprising:

obtaining, based, in part, on a representation of a cloud-based distributed computing application comprising a plurality of components, an ordered set of events based on an execution sequence for the plurality of components, wherein each event in the ordered set is associated with a corresponding set of prerequisites for initiating execution of the event;

receiving, on a shared event message bus with persistence, event identifiers corresponding to one or more events in the ordered set that are ready for execution, wherein the event message bus is shared between a plurality of nodes of a cloud, and wherein, for each event in the ordered set that is ready for execution, prerequisites in a corresponding set of prerequisites for initiating execution of the event have been satisfied; and

selecting one or more event identifiers, corresponding to the one or more of the events ready for execution, from the event message bus.

2. The method of claim 1 , further comprising:

receiving, on the shared event message bus with persistence, an indication of completion of the one or more events corresponding to the one or more selected event identifiers;

determining one or more additional events that are ready for execution based, in part, on the received indication of completion; and

placing one or more additional event identifiers corresponding to the one or more additional events that are ready for execution on the event message bus.

3. The method of claim 1 , wherein the representation of the cloud-based distributed computing application is a cloud agnostic representation of the cloud-based distributed computing application.

4. The processor-implemented method of claim 3 , wherein cloud agnostic representation of the cloud-based distributed computing application comprises one or more of:

application topology metadata for the cloud-based distributed computing application, the application topology metadata comprising dependency metadata for a plurality of components of the cloud-based distributed computing application,

configuration metadata for the plurality of components of the cloud-based distributed computing application, and

lifecycle stage metadata for components of the cloud-based distributed computing application.

5. The processor-implemented method of claim 1 , further comprising:

providing at least one of: (i) an indication that the one or more selected event identifiers have been selected, or (ii) an indication that the one or more selected event identifiers are unavailable for selection.

6. The processor-implemented method of claim 1 , wherein the ordered set of events and the set of prerequisites for initiating execution of an event are obtained, based further on a lifecycle stage associated with components of the cloud-based distributed computing application.

7. The processor-implemented method of claim 6 , wherein the lifecycle stage comprises one of: startup, initialization, configuration, shutdown, scaling, migration, backup, upgrade or recovery.

8. The processor-implemented method of claim 1 , wherein the method is performed by a distributed orchestration engine for the cloud-based distributed computing application using a subset of the plurality of distributed nodes.

9. The processor-implemented method of claim 1 , further comprising:

initiating execution of one or more selected events, the one or more selected events corresponding to one or more of the selected event identifiers.

10. The processor-implemented method of claim 9 , wherein initiating execution of the one or more selected events comprises:

initiating execution of one or more sets of actions, wherein each of the one or more sets of actions:

corresponds to a selected event in the one or more selected events; and

is obtained from a corresponding event-action map associated with the corresponding selected event, the corresponding event action map being obtained from the representation of the cloud-based distributed computing application.

11. The processor-implemented method of claim 9 , further comprising:

upon receiving an indication that execution of a subset of the one or more selected events is unsuccessful:

rolling back any completed actions associated with the execution of the subset of the one or more selected events; and

placing event-identifiers corresponding to events in the subset of the one or more selected events on the event message bus.

12. The processor-implemented method of claim 1 , wherein the selection of the at least one event ready for execution is performed by a node, based, at least in part, on a current workload of the node relative to workloads of individual nodes in a subset of the plurality of nodes.

13. An apparatus comprising:

a memory comprising a representation of a cloud-based distributed computing application comprising a plurality of components;

an event message bus with persistence,

a plurality of nodes of a cloud, wherein the plurality of nodes are coupled to the memory and the event message bus, wherein the plurality of nodes are configured to:

obtain, based, in part, on the representation of the cloud-based distributed computing application, an ordered set of events based on an execution sequence for the plurality of components, wherein each event in the ordered set is associated with a corresponding set of prerequisites for initiating execution of the event;

receive, on the shared event message bus, one or more event identifiers corresponding to one or more events in the ordered set that are ready for execution, wherein, for each event in the ordered set that is ready for execution, prerequisites in a corresponding set of prerequisites for initiating execution of the event have been satisfied; and

select, from the shared event message bus, one or more of the event identifiers corresponding to the one or more of the events ready for execution.

14. The apparatus of claim 13 , wherein the plurality of nodes are further configured to:

receive, on the shared event message bus with persistence, an indication of completion of the one or more selected events;

determine one or more additional events that are ready for execution based, in part, on the received indication of completion; and

place one or more additional event identifiers, corresponding to the one or more of the additional events ready for execution on the event message bus.

15. The apparatus of claim 13 , wherein the representation of the cloud-based distributed computing application in memory comprises a cloud agnostic representation of the cloud-based distributed computing application.

16. The apparatus of claim 15 , wherein cloud agnostic representation of the cloud-based distributed computing application in memory comprises one or more of:

application topology metadata for the cloud-based distributed computing application, the application topology metadata comprising dependency metadata for a plurality of components of the cloud-based distributed computing application,

configuration metadata for the plurality of components of the cloud-based distributed computing application, and

lifecycle stage metadata for components of the cloud-based distributed computing application.

17. The apparatus of claim 13 , wherein upon selection of the one or more event identifiers corresponding to the one or more events ready for execution by one or more corresponding nodes in the plurality of nodes, the one or more corresponding nodes are further configured to:

provide at least one of: (i) an indication that the one or more selected event identifiers have been selected, or (ii) an indication that the one or more selected event identifiers are unavailable for selection.

18. The apparatus of claim 13 , wherein the plurality of nodes are configured to obtain the ordered set of events and the set of prerequisites for initiating execution of an event, based further on a lifecycle stage associated with the components of the cloud-based distributed computing application.

19. The apparatus of claim 18 , wherein the lifecycle stage comprises one of: startup, initialization, configuration, shutdown, scaling, migration, backup, upgrade or recovery.

20. The apparatus of claim 13 , wherein upon selection of the one or more event identifiers corresponding to the one or more events ready for execution by one or more corresponding nodes in the plurality of nodes, the one or more corresponding nodes are further configured to:

initiate execution of one or more selected events, the one or more selected events corresponding to one or more of the selected event identifiers.

21. The apparatus of claim 20 , wherein to initiate execute the selected event, the one or more corresponding nodes are configured to:

initiate execution of one or more sets of actions, wherein each of the one or more sets of actions:

corresponds to a selected event in the one or more selected events; and

is obtained from a corresponding event-action map associated with the corresponding selected event, the corresponding event action map being obtained from the representation of the cloud-based distributed computing application.

22. The apparatus of claim 20 , wherein upon receiving an indication that execution of a subset of selected events is unsuccessful:

rolling back any completed actions associated with the execution of the subset of selected events; and

placing event-identifiers corresponding to events in the subset on the event message bus.

23. A non-transitory computer-readable medium comprising instructions, which, when executed by a processor, perform steps in a method, the steps comprising:

obtaining, based, in part, on a representation of a cloud based distributed computing application comprising a plurality of components, an ordered set of events based on an execution sequence for the plurality of components, wherein each event in the ordered set is associated with a corresponding set of prerequisites for initiating execution of the event;

receiving, on a shared event message bus with persistence, event identifiers corresponding to one or more events in the ordered set that are ready for execution, wherein the event message bus is shared between a plurality of nodes of a cloud, and wherein, for each event in the ordered set that is ready for execution, prerequisites in a corresponding set of prerequisites for initiating execution of the event have been satisfied; and

selecting one or more event identifiers, corresponding to the one or more of the events ready for execution, from the event message bus.

24. The non-transitory medium of claim 23 , the steps further comprising:

receiving, on the shared event message bus with persistence, an indication of completion of the one or more events corresponding to the one or more selected event identifiers;

determining one or more additional events that are ready for execution based, in part, on the received indication of completion; and

placing one or more additional event identifiers corresponding to the one or more additional events that are ready for execution on the event message bus.

25. The non-transitory medium of claim 23 , the steps further comprising:

initiating execution of one or more selected events, the one or more selected events corresponding to one or more of the selected event identifiers.

26. The non-transitory medium of claim 25 , wherein initiating execution of the one or more selected events comprises the steps of:

initiating execution of one or more sets of actions, wherein each of the one or more sets of actions:

corresponds to a selected event in the one or more selected events; and

is obtained from a corresponding event-action map associated with the corresponding selected event, the corresponding event action map being obtained from the representation of the cloud-based distributed computing application.

27. The non-transitory medium of claim 25 , the steps further comprising:

upon receiving an indication that execution of a subset of the one or more selected events is unsuccessful:

rolling back any completed actions associated with the execution of the subset of the one or more selected events; and

placing event-identifiers corresponding to events in the subset of the one or more selected events on the event message bus.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2017
From: CLIQR TECHNOLOGIES LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 043310/0258 →
CHANGE OF NAME Recorded Aug 16, 2017
From: CLIQR TECHNOLOGIES, INC.
To: CLIQR TECHNOLOGIES LLC
Reel/Frame 043576/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2015
From: FU, TIANYING; MALIK, SAAD ALI; JOSHI, GAUTAM; NAGARAJ, ABHINAV
To: CLIQR TECHNOLOGIES, INC.
Reel/Frame 035901/0069 →
Continuity (1)
Related Publication 20160378450A1 · Dec 29, 2016