# US 2019/0317837 A1 · Quantification of compute performance across multiple independently executed microservices with a state machine supported workflow graph

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0317837 A1
- Document ID: US20190317837A1
- Status: Published application
- Kind: A1
- Application number: 15/953,449
- Filed: 2018-04-14
- Published: 2019-10-17
- Earliest claimed: 2018-04-14
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: James FLETCHER; Robert Franz HAIN; Kelly Michael SMITH; Isaac MATICHUK; Jared James GOHR; Curtis Todd JOHNSON; Michael Dennis SCHUELLER
- Web page: https://patentgrep.com/patent/US20190317837A1

## CPC

- G06F 9/5072: {Grid computing}
- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- G06F 11/3433: {for load management (allocation of a server based on load conditions G06F9/505; load rebalancing G06F9/5083; redistributing the load in a network by a load balancer H04L67/1029)}
- G06F 11/3452: {Performance evaluation by statistical analysis}
- G06F 2201/81: Threshold
- G06F 2201/86: Event-based monitoring
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A bipartite workflow graph, representing an understanding of an overall service, comprises two different graph elements: entities and processes and each individual microservice defines their logical constructs as either an entity or a process in accordance with a universal schema. Notifications from such microservices conform to the universal schema, thereby enabling microservices to individually change how they operate internally, without affecting an understanding of the overall system as represented by the workflow graph. Each graph element has its state maintained by a separately addressable execution unit executing a state machine, which can be individually updated based on information received from the microservices. Changes to the workflow graph are logged and an insight engine monitors such a log to insert insight markers in accordance with predefined events, thereby enabling the collection of metrics on a service wide basis and across multiple microservices.

## Claims

### Claim 1

A set of one or more computing devices, in aggregate comprising:
one or more processing units; and
one or more computer-readable media comprising computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive a schematized notification of a first event from an independently executing service, the schematized notification conforming to a universal predefined schema;
instantiate a first separately addressable execution unit to maintain a first state machine corresponding to a state of a first process identified by the schematized notification of the first event if the first process was not previously identified by a previously received schematized notification, the independently executing service comprising the first process;
cause the first separately addressable execution unit to update the first state machine in accordance with the received schematized notification if the first process was previously identified by the previously received schematized notification;
instantiate a second separately addressable execution unit to maintain a second state machine corresponding to a state of a first entity identified by the schematized notification of the first event if the first entity was not previously identified by the previously received schematized notification, the first entity being either an input data or an output data of the first process;
cause the second separately addressable execution unit to update the second state machine in accordance with the received schematized notification if the first entity was previously identified by the previously received schematized notification; and
wherein the first event is one of:
the first entity being produced by the first process;
the first entity being consumed by the first process;
a first intent specifying that the first process intends to produce the first entity; or
a second intent specifying that the first process intends to consume the first entity.

### Claim 2 (depends on 1)

The set of computing devices of claim 1, wherein the first separately addressable execution unit updates the first state machine to transition from an intended state, indicating that the first process had not yet been instantiated by the independently executing service, to an existing state indicating that the first process has been instantiated by the independently executing service.

### Claim 3 (depends on 1)

The set of computing devices of claim 1, wherein the second separately addressable execution unit updates the second state machine to transition from an intended state, indicating that the first entity had not yet been created by the independently executing service, to an existing state indicating that the first entity has been created by the independently executing service.

### Claim 4 (depends on 1)

The set of computing devices of claim 1, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
generate a workflow graph comprising:
a first graph element corresponding to the first process;
a second graph element corresponding to the first entity; and
a first graph edge between the first and second graph elements, the first graph edge being defined by the first event.

### Claim 5 (depends on 1)

The set of computing devices of claim 1, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
insert a first marker into a log listing updates to a workflow graph, the first marker being inserted with a first update to the workflow graph associated with the first event;
insert a second marker in the log, the second marker being inserted with a second update to the workflow graph, the second update being logged after the first update and being associated with a second event occurring after the first event;
generate a first notification comprising an elapsed time between the first marker and the second marker.

### Claim 6 (depends on 5)

The set of computing devices of claim 5, wherein the first notification triggers an alert regarding operation of the independently executing service.

### Claim 7 (depends on 5)

The set of computing devices of claim 5, wherein the first notification comprises storing the elapsed time into a historical metrics database.

### Claim 8 (depends on 5)

The set of computing devices of claim 5, wherein the first notification comprises contextual information of the independently executing service.

### Claim 9 (depends on 8)

The set of computing devices of claim 8, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive a first key/value pair specifying a portion of the contextual information and hierarchical information associated with the first key/value pair;
update a context graph to incorporate the first key/value pair in accordance with the hierarchical information; and
provide the contextual information to be included as part of the first notification from the context graph.

### Claim 10 (depends on 5)

The set of computing devices of claim 5, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
detecting that an elapsed time since the first marker is greater than a specified threshold; and
generating a second notification comprising the elapsed time since the first marker.

### Claim 11 (depends on 5)

The set of computing devices of claim 5, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive a specification of an insight for which metrics are to be collected, the specification comprising: an identified starting event of the insight and an identified ending event of the insight;
trigger the inserting the first marker based on a determination that the first event is the identified starting event of the insight; and
trigger the inserting the second marker based on a determination that the second event is the identified ending event of the insight.

### Claim 12

A set of one or more computing devices, in aggregate comprising:
one or more processing units; and
one or more computer-readable media comprising computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive an insight definition comprising an identification of both a start event and an end event, the start event occurring within a first service and the end event occurring within a second service, wherein execution of the first service is independent of execution of the second service;
monitor a log listing updates to a workflow graph, the workflow graph linking entities to processes that either consume or produce the entities through one of four linkings: (1) a production of an entity by a process, (2) a consumption of the entity by the process, (3) an intent by the process to subsequently produce the entity or (4) an intent by the process to subsequently consume the entity;
determine that a first update to the workflow graph corresponds to the start event;
insert a first start marker into the log with the first update in response to the determining that the first update corresponds to the start event;
detect a second update to the workflow graph, subsequent to the first update, the second update corresponding to the end event;
insert a first end marker into the log with the second update in response to the determining that the second update corresponds to the end event; and
generate a first notification comprising an elapsed time between the inserted first start marker and the inserted first end marker.

### Claim 13 (depends on 12)

The set of computing devices of claim 12, wherein the first notification triggers an alert regarding operation of at least one of the first service or the second service.

### Claim 14 (depends on 12)

The set of computing devices of claim 12, wherein the first notification comprises storing the elapsed time into a historical metrics database.

### Claim 15 (depends on 12)

The set of computing devices of claim 12, wherein the first notification comprises additional metrics of a first insight demarcated by the first start marker and the first end marker, the additional metrics quantifying aspects of at least one of entities or processes whose changes were logged between the first update and the second update in the log listing the updates to the workflow graph.

### Claim 16 (depends on 12)

The set of computing devices of claim 12, wherein the first notification comprises contextual information of at least one of the first service or the second service.

### Claim 17 (depends on 16)

The set of computing devices of claim 16, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive a first key/value pair specifying a portion of the contextual information and hierarchical information associated with the first key/value pair;
update a context graph to incorporate the first key/value pair in accordance with the hierarchical information; and
provide the contextual information to be included as part of the first notification from the context graph.

### Claim 18 (depends on 12)

The set of computing devices of claim 12, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
detecting that an elapsed time since the first start marker is greater than a specified threshold; and
generating a second notification comprising the elapsed time since the first marker;
wherein further the insight definition further comprises a specification of the specified threshold.

### Claim 19 (depends on 12)

The set of computing devices of claim 12, wherein the one or more computer-readable media comprise further computer-executable instructions which, when executed by the one or more processing units, cause the set of computing devices to:
receive a schematized notification of a first event from one of the first or second independently executing services, the schematized notification conforming to a universal predefined schema;
instantiate a first separately addressable execution unit to maintain a first state machine corresponding to a state of a first process identified by the schematized notification of the first event if the first process was not previously identified by a previously received schematized notification, the independently executing service comprising the first process;
cause the first separately addressable execution unit to update the first state machine in accordance with the received schematized notification if the first process was previously identified by the previously received schematized notification;
instantiate a second separately addressable execution unit to maintain a second state machine corresponding to a state of a first entity identified by the schematized notification of the first event if the first entity was not previously identified by the previously received schematized notification, the first entity being either an input data or an output data of the first process; and
cause the second separately addressable execution unit to update the second state machine in accordance with the received schematized notification if the first entity was previously identified by the previously received schematized notification.

### Claim 20

A method of quantifying compute performance across multiple independently executed services, the method comprising:
receive a schematized notification of a first event from one of the multiple independently executed services, the schematized notification conforming to a universal predefined schema;
instantiate a first separately addressable execution unit to maintain a first state machine corresponding to a state of a first process identified by the schematized notification of the first event if the first process was not previously identified by a previously received schematized notification, the one of the multiple independently executed services comprising the first process;
cause the first separately addressable execution unit to update the first state machine in accordance with the received schematized notification if the first process was previously identified by the previously received schematized notification;
instantiate a second separately addressable execution unit to maintain a second state machine corresponding to a state of a first entity identified by the schematized notification of the first event if the first entity was not previously identified by the previously received schematized notification, the first entity being either an input data or an output data of the one of the multiple independently executed services;
cause the second separately addressable execution unit to update the second state machine in accordance with the received schematized notification if the first entity was previously identified by the previously received schematized notification;
generate a log entry in a log, the log entry indicating a change to a workflow graph made by either: the instantiating the first separately addressable execution unit, the causing the first separately addressable execution unit to update, the instantiating the second separately addressable execution unit, or the causing the second separately addressable execution unit to update, the workflow graph linking entities to processes through one of four linkings: (1) a production of an entity by a process, (2) a consumption of the entity by the process, (3) an intent by the process to subsequently produce the entity or (4) an intent by the process to subsequently consume the entity
determine that a first update to the workflow graph corresponds to a start event identified by an insight definition;
insert a first start marker into the log with the first update in response to the determining that the first update corresponds to the start event;
detect a second update to the workflow graph, subsequent to the first update, the second update corresponding to the end event;
insert a first end marker into the log with the second update in response to the determining that the second update corresponds to the end event; and
generate a first notification comprising an elapsed time between the inserted first start marker and the inserted first end marker, the elapsed time quantifying a subset of the compute performance across the multiple independently executed services.
