IP Library › Granted Patent US 11,099,826
Granted Patent B2
US 11,099,826 · App. 16/600,735 · Granted Aug 24, 2021

Canary deployment using an application delivery controller

Inventors: Chiradeep Vittal (Santa Clara, CA); Rajesh Joshi (Karnataka, IN); Aman Chaudhary (Karnataka, IN); Raghav SN (Karnataka, IN); Ruchit Gupta (Karnataka, IN); Bhavana Shobhana (Karnataka, IN); Sanchita Ghai (Karnataka, IN)
Assignee: Citrix Systems, Inc.
G06F8/65H04L67/101H04L67/1012H04L67/1031
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,099,826
App. No.
16/600,735
Granted
Aug 24, 2021
Kind
B2
Abstract

Methods and systems for performing application deployments in a computing environment are presented herein. One or more components of the computing environment may perform a canary deployment of an updated version of an application. As the canary deployment is performed, one or more determinations as to whether to continue, stop, or complete the canary deployment may be performed. These determinations may be based on one or more metrics determined by an application delivery controller of the computing environment. The application delivery controller may be configured to divert or forward traffic to application resources that execute the updated version. Additionally, the canary deployment may be performed in an automated fashion.

Claims (62)

1. A method comprising:

receiving, by one or more computing devices, an indication that one or more first application resources have been configured, within a computing environment, based on an updated version of an application, wherein the computing environment includes one or more second application resources that have been configured based on an original version of the application;

receiving, by the one or more computing devices, configuration data for canary deployment of the updated version over a plurality of stages, wherein the configuration data includes first data that indicates a time period for performing the plurality of stages and second data that indicates an amount, of diverted or forwarded traffic, to increase based on the plurality of stages;

causing, by the one or more computing devices and based on the configuration data, configuration of an application delivery controller;

initiating the canary deployment of the updated version;

receiving, from the application delivery controller, one or more metrics associated with performance of the one or more first application resources;

determining, by the one or more computing devices and based on the time period for the plurality of stages, that a first stage of the plurality of stages has expired; and

based on the first stage having expired:

determining, based on the one or more metrics, a status for the canary deployment, and

causing, based on the status for the canary deployment, the application delivery controller to increase, based on the second data that indicates the amount to increase, traffic being diverted or forwarded to the one or more first application resources.

2. The method of claim 1 , wherein the one or more metrics include one or more of the following: a count of error codes received from the one or more first application resources, a count of state flips for the one or more first application resources, an average time to first byte for the one or more first application resources, and a count of requests waiting in a queue for the one or more first application resources.

3. The method of claim 1 , wherein the configuration of the application delivery controller includes:

configuration of a server that is configured to, based on one or more diversion rules, divert or forward portions of traffic associated with the application to a first load balancer and a second load balancer;

configuration of the first load balancer that is configured to receive, from the server, a first portion of the traffic associated with the application and forward the first portion to the one or more first application resources; and

configuration of the second load balancer that is configured to receive, from the server, a second portion of the traffic associated with the application and forward the second portion to the one or more second application resources.

4. The method of claim 3 , wherein the one or more diversion rules includes a restriction associated with a geographic location or a range of source addresses.

5. The method of claim 3 , further comprising:

determining, by an ingress controller and based on the second data that indicates the amount to increase, the one or more diversion rules, wherein a first diversion rule of the one or more diversion rules indicates, based on one or more data fields of the configuration data, a percentage of traffic to divert or forward to the one or more first application resources.

6. The method of claim 1 , wherein the application delivery controller is a container-based application delivery controller.

7. The method of claim 1 , wherein the determining the status for the canary deployment is performed by the application delivery controller.

8. The method of claim 1 , wherein causing the application delivery controller to increase traffic being diverted or forwarded to the one or more first application resources is performed based on the status for the canary deployment indicating that the canary deployment has not failed.

9. The method of claim 1 , wherein determining the status of the canary deployment is performed based on comparing the one or more metrics to one or more thresholds and/or based on comparing the one or more metrics to one or more additional metrics associated with performance of the one or more second application resources.

10. The method of claim 1 , wherein determining the status of the canary deployment is performed based on applying a weighted summation to the one or more metrics and comparing the weighted summation to a summation threshold.

11. The method of claim 10 , wherein determining the status of the canary deployment is performed based on a first metric being assigned as a critical metric and comparing the first metric to a threshold.

12. A method comprising:

receiving, by an application delivery controller, one or more first signals configured to cause the application delivery controller to configure itself for a first stage of canary deployment of an updated version of an application within a computing environment, wherein the canary deployment is to be performed in an automated fashion over at least the first stage and a second stage, wherein the computing environment includes one or more first application resources that have been configured based on the updated version of the application, and wherein the computing environment includes one or more second application resources that have been configured based on an original version of the application;

based on the one or more first signals, storing, by the application delivery controller, one or more first diversion rules associated with the first stage of the canary deployment;

based on the one or more first signals, configuring a server of the application delivery controller to, based on the one or more first diversion rules, divert or forward portions of traffic associated with the application to a first load balancer and a second load balancer;

based on the one or more first signals, configuring the first load balancer of the application delivery controller to receive, from the server, a first portion of the traffic associated with the application and forward the first portion to the one or more first application resources;

based on the one or more first signals, configuring the second load balancer of the application delivery controller to receive, from the server, a second portion of the traffic associated with the application and forward the second portion to the one or more second application resources;

based on performance of the first stage of the canary deployment in the automated fashion, forwarding, by the application delivery controller, first received traffic using the server, the first load balancer, the second load balancer, and the one or more first diversion rules;

sending, based on the first stage of the canary deployment and by the application delivery controller, one or more metrics associated with performance of the one or more first application resources;

based on the canary deployment continuing, in the automated fashion, from the first stage of the canary deployment and to a second stage of the canary deployment, receiving, by the application delivery controller, one or more second signals that are configured to cause the application delivery controller to configure itself for the second stage of the canary deployment by at least changing an amount of traffic being diverted or forwarded to the one or more first application resources;

based on the one or more second signals, storing one or more second diversion rules associated with a second stage of the canary deployment; and

based on the one or more second signals, configuring the server of the application delivery controller to, based on the one or more second diversion rules, change the amount of traffic being diverted or forwarded to the first load balancer or the second load balancer.

13. The method of claim 12 , wherein the one or more metrics include one or more of the following: a count of error codes received from the one or more first application resources, a count of state flips for the one or more first application resources, an average time to first byte for the one or more first application resources, and a count of requests waiting in a queue for the one or more first application resources.

14. The method of claim 12 , wherein the one or more first diversion rules includes a restriction associated with a geographic location or a range of source addresses.

15. The method of claim 12 , wherein the application delivery controller is a container-based application delivery controller.

16. The method of claim 12 , wherein a first diversion rule of the one or more first diversion rules indicates a first percentage of traffic to divert or forward to the one or more first application resources.

17. The method of claim 16 , wherein a first diversion rule of the one or more second diversion rules indicates a second percentage of traffic to divert or forward to the one or more first application resources, wherein the second percentage is greater than the first percentage, and wherein the method further comprises:

based on a second stage of the canary deployment, forward, by the application delivery controller, second received traffic using the server, the first load balancer, the second load balancer, and the one or more second diversion rules.

18. A system comprising:

an ingress controller; and

an application delivery controller;

wherein the ingress controller is configured to:

receive an indication that one or more first application resources have been configured, within a computing environment, based on an updated version of an application, wherein the computing environment includes one or more second application resources that have been configured based on an original version of the application;

receive configuration data for canary deployment of the updated version over a plurality of stages, wherein the configuration data includes first data that indicates a time period for performing the plurality of stages and second data that indicates an amount, of diverted or forwarded traffic, to increase based on the plurality of stages;

send, to the application delivery controller, one or more first signals that are configured to cause, based on the configuration data, configuration of the application delivery controller;

initiate the canary deployment of the updated version;

receive, from the application delivery controller, one or more metrics associated with performance of the one or more first application resources;

determine, based on the time period for performing the plurality of stages, that a first stage of the plurality of stages has expired; and

based on the first stage having expired:

determine, based on the one or more metrics, a status for the canary deployment, and

send, to the application delivery controller, one or more second signals that are configured to cause, based on the status for the canary deployment, the application delivery controller to increase, based on the second data that indicates the amount to increase, traffic being diverted or forwarded to the one or more first application resources; and

wherein the application delivery controller is configured to:

receive the one or more first signals;

configure, based on the one or more first signals, the application delivery controller for the canary deployment;

based on a first stage of the canary deployment, forward first received traffic to the one or more first application resources;

send, based on the first stage of the canary deployment, one or more metrics associated with performance of the one or more first application resources; and

receive the one or more second signals.

19. The system of claim 18 , wherein the one or more metrics include one or more of the following: a count of error codes received from the one or more first application resources, a count of state flips for the one or more first application resources, an average time to first byte for the one or more first application resources, and a count of requests waiting in a queue for the one or more first application resources.

20. The system of claim 18 , wherein the application delivery controller is a container-based application delivery controller being executed by one or more computing devices.

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 Oct 14, 2019
From: VITTAL, CHIRADEEP; JOSHI, RAJESH; CHAUDHARY, AMAN; SN, RAGHAV; GUPTA, RUCHIT; SHOBHANA, BHAVANA; GHAI, SANCHITA
To: CITRIX SYSTEMS, INC.
Reel/Frame 050703/0573 →
Continuity (1)
Related Publication 20210109734A1 · Apr 15, 2021