# US 2018/0324119 A1 · Upgrading components of a messaging system used by a microservice-based application

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

- Number: US 2018/0324119 A1
- Document ID: US20180324119A1
- Status: Published application
- Kind: A1
- Application number: 15/588,527
- Filed: 2017-05-05
- Published: 2018-11-08
- Earliest claimed: 2017-05-05
- Assignees: ShieldX Networks, Inc.
- Applicants: ShieldX Networks, Inc.
- Inventors: Ratinder Paul Singh Ahuja; Manuel Nedbal; Meni Hillel
- Web page: https://patentgrep.com/patent/US20180324119A1

## CPC

- H04L 51/046: Interoperability with other network applications or services
- G06F 8/60: Software deployment
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- H04L 63/0236: {Filtering by address, protocol, port number or service, e.g. IP-address or URL}
- H04L 63/0245: {Filtering by information in the payload}
- H04L 63/0254: {Stateful filtering}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems, methods, and apparatuses enable a microservice-based application to dynamically update components of the system without disrupting messaging occurring between microservices in the system. Microservices of a microservice-based application store data indicating mappings between data object versions and message object versions and which is used update system components in a controlled manner. As used herein, a data object generally refers to any data generated by a microservice and that can be sent to one or more other microservices using a publish-subscribe messaging pattern or other messaging architecture. A message object refers to data used to encapsulate one or more data objects and used to send the data object from one component to another in the system.

## Claims

### Claim 1

A computer-implemented method, comprising:
receiving, by a microservice of a plurality of microservices, a message object from a first communication microservice of a plurality of communication microservices, wherein the message object is associated with a first message object version, and wherein the first communication microservice supports the first message object version;
in response to receiving the message object associated with the first message object version, identifying:
a version mapping that maps the first message object version to a data object version; and
a statistics entry indicating a number of message objects associated with the data object version currently in process by any of the plurality of microservices;
determining, based on the statistics entry, that the number of message objects associated with the data object version currently in process is zero; and
based on the determination that the number of message objects associated with the data object version currently in process is zero, updating the version mapping from the first message object version to a second message object version.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving a data object associated with the data object version, the data object to be sent to another security microservice of the plurality of microservices;
determining, based on the version mapping, to use the second message object version to encapsulate the data object as a message object; and
sending the message object encapsulated using the second message object version to a second communication microservice that is different from the first communication microservice.

### Claim 3 (depends on 1)

The method of claim 1, wherein identifying the version mapping further includes identifying a topic associated with the message object, where the topic is one of a plurality of topics of a publish-subscribe messaging system.

### Claim 4 (depends on 1)

The method of claim 1, further comprising sending a data object associated with the data object version to another process of the microservice.

### Claim 5 (depends on 1)

The method of claim 1, further comprising, in response to receiving the message object associated with the first message object version, updating the number of message objects associated with the data object version currently in process by the plurality of microservices.

### Claim 6 (depends on 1)

The method of claim 1, wherein the statistics entry includes a message counter indicating the number of message objects associated with the data object version currently in process.

### Claim 7

A computer-implemented method, comprising:
generating, by a microservice of a plurality of microservices, a data object associated with a data object version;
determining a topic associated with the data object, wherein the topic is one of a plurality of topics of a publish-subscribe messaging system;
identifying, based on the determined topic, a mapping between the data object version and a message object version;
updating statistics associated with the data object version to indicate that a message object encapsulating the data object version is being sent to a communication microservice; and
sending the message object to the communication microservice.

### Claim 8 (depends on 7)

The method of claim 7, wherein the communication microservice is selected from a plurality of communication microservices based on a message object version associated with the message object.

### Claim 9 (depends on 7)

The method of claim 7, further comprising:
receiving, by the microservice, a message object associated with the message object version;
in response to receiving the message object associated with the message object version, identifying:
a version mapping that maps the message object version to a data object version; and
a statistic entry indicating a number of message objects associated with the data object version currently in process by any of the plurality of microservices;
determining, based on the statistics entry, that the number of message objects associated with the data object version currently in process is zero; and
based on the determination that the number of message objects associated with the data object version currently in process is zero, updating the version mapping from the message object version to a different message object version.

### Claim 10 (depends on 7)

The method of claim 7, wherein determining the topic associated with the message object includes identifying one or more characteristics associated with the message object.

### Claim 11

A non-transitory machine-readable storage medium storing instructions which, when executed by a processor, cause performance of operations comprising:
receiving, by a microservice of a plurality of microservices, a message object from a first communication microservice of a plurality of communication microservices, wherein the message object is associated with a first message object version, and wherein the first communication microservice supports the first message object version;
in response to receiving the message object associated with the first message object version, identifying:
a version mapping that maps the first message object version to a data object version; and
a statistics entry indicating a number of message objects associated with the data object version currently in process by any of the plurality of microservices;
determining, based on the statistics entry, that the number of message objects associated with the data object version currently in process is zero; and
based on the determination that the number of message objects associated with the data object version currently in process is zero, updating the version mapping from the first message object version to a second message object version.

### Claim 12 (depends on 11)

The non-transitory machine-readable storage medium of claim 11, further comprising instructions which, when executed by the processor, cause performance of operations comprising:
receiving a data object associated with the data object version, the data object to be sent to another security microservice of the plurality of microservices;
determining, based on the version mapping, to use the second message object version to encapsulate the data object as a message object; and
sending the message object encapsulated using the second message object version to a second communication microservice that is different from the first communication microservice.

### Claim 13 (depends on 11)

The non-transitory machine readable storage medium of claim 11, wherein identifying the version mapping further includes identifying a topic associated with the message object, where the topic is one of a plurality of topics of a publish-subscribe messaging system.

### Claim 14 (depends on 11)

The non-transitory machine-readable storage medium of claim 11, further comprising instructions which, when executed by the processor, cause performance of operations comprising sending a data object associated with the data object version to another process of the microservice.

### Claim 15 (depends on 11)

The non-transitory machine-readable storage medium of claim 11, further comprising instructions which, when executed by the processor, cause performance of operations comprising, in response to receiving the message object associated with the first message object version, updating the number of message objects associated with the data object version currently in process by the plurality of microservices.

### Claim 16 (depends on 11)

The non-transitory machine-readable storage medium of claim 11, wherein the statistics entry includes a message counter indicating the number of message objects associated with the data object version currently in process.

### Claim 17

A non-transitory machine-readable storage medium storing instructions which, when executed by a processor, cause performance of operations comprising:
generating, by a microservice of a plurality of microservices, a data object associated with a data object version;
determining a topic associated with the data object, wherein the topic is one of a plurality of topics of a publish-subscribe messaging system;
identifying, based on the determined topic, a mapping between the data object version and a message object version;
updating statistics associated with the data object version to indicate that a message object encapsulating the data object version is being sent to a communication microservice; and
sending the message object to the communication microservice.

### Claim 18 (depends on 17)

The non-transitory machine-readable storage medium of claim 17, wherein the communication microservice is selected from a plurality of communication microservices based on a message object version associated with the message object.

### Claim 19 (depends on 17)

The non-transitory machine-readable storage medium of claim 17, further comprising instructions which, when executed by the processor, cause performance of operations comprising:
receiving, by the microservice, a message object associated with the message object version;
in response to receiving the message object associated with the message object version, identifying:
a version mapping that maps the message object version to a data object version; and
a statistic entry indicating a number of message objects associated with the data object version currently in process by any of the plurality of microservices;
determining, based on the statistics entry, that the number of message objects associated with the data object version currently in process is zero; and
based on the determination that the number of message objects associated with the data object version currently in process is zero, updating the version mapping from the message object version to a different message object version.

### Claim 20 (depends on 17)

The non-transitory machine-readable storage medium of claim 17, wherein determining the topic associated with the message object includes identifying one or more characteristics associated with the message object.
