IP Library › Granted Patent US 11,281,447
Granted Patent B2
US 11,281,447 · App. 16/719,105 · Granted Mar 22, 2022

Service graphs for canary deployment systems and methods

Inventor: Raghav Sn (Bengaluru, IN)
Assignee: Citrix Systems, Inc.
G06F8/65G06F9/24
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,281,447
App. No.
16/719,105
Granted
Mar 22, 2022
Kind
B2
Abstract

Described embodiments provide systems and methods for generating service graphs for canary deployment of microservices is provided. A call chain can include a canary version of a microservice and one or more production versions of microservices. The canary version microservice can receive a request and include into header portion of the request an identifier indicating the microservice is the canary version of the microservice. The microservice can provide, to the one or more subsequent microservices of the call chain, the request with the identifier. The one or more subsequent microservices can include one or more tags in the request to identify that the one or more subsequent microservices are executing the production versions while retaining the identifier with the request. A service graph can be generated identifying transactions processed by the canary version microservice and the production versions of the one or more subsequent microservices.

Claims (53)

1. A method for monitoring multiple versions of microservices, the method comprising:

(a) receiving, by a first microservice of a plurality of microservices forming a first call chain, a request from a client, the first microservice executing a canary version of the first microservice and one or more subsequent microservices of the first call chain executing production versions of the one or more subsequent microservices;

(b) including, by the first microservice, into a header portion of the request an identifier indicating the first microservice is the canary version of the first microservice;

(c) providing, by the first microservice to the one or more subsequent microservices of the first call chain, the request with the identifier, the one or more subsequent microservices including one or more tags in the request to identify that the one or more subsequent microservices are executing the production versions of the one or more subsequent microservices while retaining the identifier with the request as the request is processed by the one or more subsequent microservices forming the first call chain; and

(d) generating, by a device intermediary to the plurality of microservices, a service graph identifying transactions processed by the canary version of the first microservice and the production versions of the one or more subsequent microservices.

2. The method of claim 1 , further comprising:

deploying, by the device, the first microservice executing the canary version of the first microservice in the first call chain to process a first portion of requests from one or more clients; and

deploying, by the device, the first microservice executing a production version of the first microservice in a second call chain to process a second portion of requests from the one or more clients.

3. The method of claim 1 , further comprising:

generating, by the device, the service graph including parameters of the transactions processed by the first call chain including the first microservice executing the canary version of the first microservice and the parameters of the transactions processed by a second call chain including the first microservice executing a production version of the first microservice.

4. The method of claim 3 , wherein the parameters of the transactions include a response time of the respective microservice performing one or more transactions.

5. The method of claim 1 , further comprising:

identifying, by the device using the identifier, one or more transactions performed by the first microservice executing the canary version of the first microservice and one or more transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

6. The method of claim 5 , further comprising:

generating, by the device, the service graph to include a first indicator for the one or more transactions performed by the first microservice executing the canary version of the first microservice and a second indicator for the one or more transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

7. The method of claim 1 , further comprising:

determining, by the device using the service graph, one or more differences between parameters of the transactions performed by the first microservice executing the canary version of the first microservice and parameters of the transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

8. The method of claim 1 , further comprising:

inserting, by the first microservice, the identifier into at least one of a Hypertext Transfer Protocol (HTTP) header portion of the request or a Hypertext Transfer Protocol Secure (HTTPS) header portion of the request.

9. The method of claim 1 , further comprising:

generating, by the device, the service graph of the first call chain to identify a failure between the plurality of microservices, a number of times each microservice of the plurality of microservices has been called, and a rate of success of using the plurality of microservices of the first call chain.

10. A system for monitoring multiple versions of microservices, the system comprising:

a device comprising one or more processors, coupled to memory and intermediary to a plurality of microservices forming a first call chain; and

a first microservice of the plurality of microservices executing a canary version of the first microservice and one or more subsequent microservices of the first call chain executing production versions of the one or more subsequent microservices;

wherein the first microservice is configured to:

receive a request from a client;

include into a header portion of the request an identifier indicating the first microservice is the canary version of the first microservice; and

provide, to the one or more subsequent microservices of the first call chain, the request with the identifier, the one or more subsequent microservices including one or more tags in the request to identify that the one or more subsequent microservices are executing the production versions of the one or more subsequent microservices while retaining the identifier with the request as the request is processed by the one or more subsequent microservices forming the first call chain; and

wherein the device is configured to:

generate a service graph identifying transactions processed by the canary version of the first microservice and the production versions of the one or more subsequent microservices.

11. The system of claim 10 , wherein the device is further configured to:

deploy the first microservice executing the canary version of the first microservice in the first call chain to process a first portion of requests from one or more clients; and

deploy the first microservice executing a production version of the first microservice in a second call chain to process a second portion of requests from the one or more clients.

12. The system of claim 10 , wherein the device is further configured to:

generate the service graph to include parameters of the transactions processed by the first call chain including the first microservice executing the canary version of the first microservice and the parameters of the transactions processed by a second call chain including the first microservice executing a production version of the first microservice.

13. The system of claim 12 , wherein the parameters of the transactions include a response time of the respective microservice performing one or more transactions.

14. The system of claim 10 , wherein the device is further configured to:

identify, using the identifier, one or more transactions performed by the first microservice executing the canary version of the first microservice and one or more transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

15. The system of claim 14 , wherein the device is further configured to:

generate the service graph to include a first indicator for the one or more transactions performed by the first microservice executing the canary version of the first microservice and a second indicator for the one or more transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

16. The system of claim 10 , wherein the device is further configured to:

determine, using the service graph, one or more differences between parameters of the transactions performed by the first microservice executing the canary version of the first microservice and parameters of the transactions performed by the one or more subsequent microservices executing the production versions of the one or more subsequent microservices.

17. The system of claim 10 , wherein the device is further configured to:

insert the identifier into at least one of a Hypertext Transfer Protocol (HTTP) header portion of the request or a Hypertext Transfer Protocol Secure (HTTPS) header portion of the request.

18. The system of claim 10 , wherein the device is further configured to:

generate the service graph of the first call chain to identify a failure between the plurality of microservices, a number of times each microservice of the plurality of microservices has been called, and a rate of success of using the plurality of microservices of the first call chain.

19. A non-transitory computer readable medium storing program instructions for causing one or more processors to:

receive at a first microservice of a plurality of microservices forming a first call chain, a request from a client, the first microservice executing a canary version of the first microservice and one or more subsequent microservices of the first call chain executing production versions of the one or more subsequent microservices;

include into a header portion of the request an identifier indicating the first microservice is the canary version of the first microservice;

provide, to the one or more subsequent microservices of the first call chain, the request with the identifier, the one or more subsequent microservices including one or more tags in the request to identify that the one or more subsequent microservices are executing the production versions of the one or more subsequent microservices while retaining the identifier with the request as the request is processed by the one or more subsequent microservices forming the first call chain; and

generate a service graph identifying transactions processed by the canary version of the first microservice and the production versions of the one or more subsequent microservices.

20. The non-transitory computer readable medium of claim 19 , wherein the program instructions further cause the one or more processors to:

generate the service graph including parameters of the transactions processed by the first call chain including the first microservice executing the canary version of the first microservice and the parameters of the transactions processed by a second call chain including the first microservice executing a production version of the first microservice.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2019
From: SN, RAGHAV
To: CITRIX SYSTEMS, INC.
Reel/Frame 051368/0029 →
Continuity (1)
Related Publication 20210191706A1 · Jun 24, 2021
Cited By (1)
US 12,423,187