IP Library Granted Patent US 12,277,414
Granted Patent B2
US 12,277,414 · App. 18/670,184 · Granted Apr 15, 2025

Controlled updates of containers in a distributed application deployment environment

Inventor: Mayank Kumar (Freemont, CA)
Assignee: Salesforce, Inc.
G06F8/65G06F9/445
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 12,277,414
App. No.
18/670,184
Granted
Apr 15, 2025
Kind
B2
Abstract

System and methods are described for implementing controlled updates of containers in a distributed application deployment environment. In one implementation, a method comprises: receiving a request to update a target container of a plurality of containers within a deployed computing unit; identifying an updated configuration object to be applied to the target container based on the request; receiving or computing a health indicator representative of performance of the deployed computing unit or other containers to which the updated configuration object has been applied; and assigning the updated configuration object to the target container based on the health indicator.

Claims (51)

1. A method, comprising:

receiving, by a computer system, a request to update a container of a particular type that is included in a plurality of computing units deployed in a distributed environment, wherein the container was deployed in accordance with a current configuration defining a first version of the container and the request identifies an updated configuration defining a second version of the container, and wherein the plurality of computing units includes different sets of computing units corresponding to different tenants associated with the distributed environment;

assigning, by the computer system, the updated configuration to a first set of computing units associated with a first one of the different tenants such that, for a subsequent deployment of the first set of computing units, the container is deployed in the first set of computing units in accordance with the updated configuration;

determining, by the computer system, a health indicator representative of performance of the container in one or more computing units to which the updated configuration has already been assigned; and

based on the health indicator indicating that the container in the one or more computing units is functional, the computer system assigning the updated configuration to a second set of computing units associated with a second one of the different tenants.

2. The method of claim 1 , wherein the first and second tenants are associated with different namespaces, and wherein the assigning of the updated configuration to the first set of computing units associated with the first tenant includes:

removing, from the current configuration, a reference label to a namespace associated with the first tenant; and

adding the reference label to the updated configuration.

3. The method of claim 1 , further comprising:

after the assigning of the updated configuration to the first set of computing units, the computer system causing termination of the first set of computing units to trigger the subsequent deployment of the first set of computing units in association with the updated configuration.

4. The method of claim 3 , further comprising:

receiving, by the computer system from the first tenant, an indication that designates one of the first set of computing units as a canary computing unit to update first relative to remaining ones of the first set of computing units, wherein the causing of the termination of the first set of computing units includes:

causing termination of the canary computing unit of the first set; and

causing termination of the remaining computing units of the first set in response to determining that a subsequent deployment of the canary computing unit is functional.

5. The method of claim 1 , wherein the health indicator is based on an availability of a set of services provided by the one or more computing units, and wherein the second set of computing units also provides the set of services.

6. The method of claim 1 , wherein the request to update the container is received from a first entity that maintains the container, and wherein the first entity is different than a second entity that requested deployment of the plurality of computing units and that maintains a main application container included in the plurality of computing units.

7. The method of claim 1 , wherein the container is a sidecar container, and wherein the updated configuration is assigned to a given one of the second set of computing units associated with the second tenant without requiring that an update is applied to a main application container included in the given computing unit.

8. The method of claim 1 , wherein the assigning of the updated configuration to the second set of computing units is in response to a detection that the second set of computing units have terminated.

9. A non-transitory computer-readable medium having program instructions stored thereon that are capable of causing a computer system to perform operations comprising:

receiving a request to update a container of a particular type that is included in a plurality of computing units deployed in a distributed environment, wherein the container was deployed in accordance with a current configuration defining a first version of the container and the request identifies an updated configuration defining a second version of the container, and wherein the plurality of computing units includes different sets of computing units corresponding to different tenants associated with the distributed environment;

assigning the updated configuration to a first set of computing units associated with a first one of the different tenants such that, for a subsequent deployment of the first set of computing units, the container is deployed in the first set of computing units in accordance with the updated configuration;

determining a health indicator representative of performance of one or more computing units to which the updated configuration has already been assigned; and

responsive to a determination that the health indicator satisfies a threshold condition, assigning the updated configuration to a second set of computing units associated with a second one of the different tenants.

10. The non-transitory computer-readable medium of claim 9 , wherein the health indicator is based on an availability of Uniform Resource Locator (URL) links that are associated with the one or more computing units.

11. The non-transitory computer-readable medium of claim 9 , wherein the health indicator is determined as a ratio of unavailable services associated with the one or more computing units to a total number of services associated with the one or more computing units.

12. The non-transitory computer-readable medium of claim 9 , wherein the assigning of the updated configuration to the first set of computing units associated with the first tenant includes:

removing, from the current configuration, a reference label to a namespace associated with the first tenant; and

adding the reference label to the updated configuration.

13. The non-transitory computer-readable medium of claim 9 , wherein the operations further comprise:

after the assigning of the updated configuration to the first set of computing units, causing termination of the first set of computing units to trigger the subsequent deployment of the first set of computing units in association with the updated configuration.

14. The non-transitory computer-readable medium of claim 13 , wherein the operations further comprise:

receiving, from the first tenant, an indication that designates one of the first set of computing units as a canary computing unit to update first relative to remaining ones of the first set of computing units, wherein the causing of the termination of the first set of computing units includes:

causing termination of the canary computing unit of the first set; and

causing termination of the remaining computing units of the first set in response to determining that a subsequent deployment of the canary computing unit is functional.

15. A system, comprising:

at least one processor; and

a memory having program instructions stored thereon that are executable by the at least one processor to cause the system to perform operations comprising:

receiving a request to update a container of a particular type that is included in a plurality of computing units deployed in a distributed environment, wherein the container was deployed in accordance with a current configuration defining a first version of the container and the request identifies an updated configuration defining a second version of the container, and wherein the plurality of computing units includes different sets of computing units corresponding to different tenants associated with the distributed environment;

assigning the updated configuration to a first set of computing units associated with a first one of the different tenants such that, for a subsequent deployment of the first set of computing units, the container is deployed in the first set of computing units in accordance with the updated configuration;

determining a health indicator representative of performance of the container in one or more computing units to which the updated configuration has already been assigned; and

based on the health indicator indicating that the container in the one or more computing units is functional, assigning the updated configuration to a second set of computing units associated with a second one of the different tenants.

16. The system of claim 15 , wherein the health indicator is determined as a time series that indicates, over time, an availability of Uniform Resource Locator links associated with the one or more computing units.

17. The system of claim 15 , wherein the first and second tenants are associated with different namespaces, and wherein the assigning of the updated configuration to the first set of computing units associated with the first tenant includes:

removing, from the current configuration, a reference label to a namespace associated with the first tenant; and

adding the reference label to the updated configuration.

18. The system of claim 15 , wherein the operations further comprise:

terminating the first set of computing units to trigger the subsequent deployment of the first set of computing units in association with the updated configuration.

19. The system of claim 18 , wherein the terminating of the first set of computing units includes:

terminating a particular one of the first set of computing units; and

terminating remaining computing units of the first set in response to determining that a subsequent deployment of the particular computing unit is functional.

20. The system of claim 15 , wherein the assigning of the updated configuration to the second set of computing units is subsequent to a termination of the second set of computing units.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2024
From: KUMAR, MAYANK
To: SALESFORCE.COM, INC.
Reel/Frame 067481/0856 →
CHANGE OF NAME Recorded May 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 067486/0789 →
Continuity (2)
Continuation 17462888 · Aug 31, 2021
Related Publication 20240311134A1 · Sep 19, 2024
References Cited (142)
US 5577188A · Zhu · 1996 [cited by applicant]
US 5608872A · Schwartz · 1997 [cited by applicant]
US 5649104A · Carleton · 1997 [cited by applicant]
US 5715450A · Ambrose · 1998 [cited by applicant]
US 5761419A · Schwartz · 1998 [cited by applicant]
US 5819038A · Carleton · 1998 [cited by applicant]
US 5821937A · Tonelli · 1998 [cited by applicant]
US 5831610A · Tonelli · 1998 [cited by applicant]
US 5873096A · Lim · 1999 [cited by applicant]
US 5918159A · Fomukong · 1999 [cited by applicant]
US 5963953A · Cram · 1999 [cited by applicant]
US 6092083A · Brodersen · 2000 [cited by applicant]
US 6169534B1 · Raffel · 2001 [cited by applicant]
US 6178425B1 · Brodersen · 2001 [cited by applicant]
US 6189011B1 · Lim · 2001 [cited by applicant]
US 6216135B1 · Brodersen · 2001 [cited by applicant]
US 6233617B1 · Rothwein · 2001 [cited by applicant]
US 6266669B1 · Brodersen · 2001 [cited by applicant]
US 6295530B1 · Ritchie · 2001 [cited by applicant]
US 6324568B1 · Diec · 2001 [cited by applicant]
US 6324693B1 · Brodersen · 2001 [cited by applicant]
US 6336137B1 · Lee · 2002 [cited by applicant]
US D454139S · Feldcamp · 2002 [cited by applicant]
US 6367077B1 · Brodersen · 2002 [cited by applicant]
US 6393605B1 · Loomans · 2002 [cited by applicant]
US 6405220B1 · Brodersen · 2002 [cited by applicant]
US 6434550B1 · Warner · 2002 [cited by applicant]
US 6446089B1 · Brodersen · 2002 [cited by applicant]
US 6535909B1 · Rust · 2003 [cited by applicant]
US 6549908B1 · Loomans · 2003 [cited by applicant]
US 6553563B2 · Ambrose · 2003 [cited by applicant]
US 6560461B1 · Fomukong · 2003 [cited by applicant]
US 6574635B2 · Stauber · 2003 [cited by applicant]
US 6577726B1 · Huang · 2003 [cited by applicant]
US 6601087B1 · Zhu · 2003 [cited by applicant]
US 6604117B2 · Lim · 2003 [cited by applicant]
US 6604128B2 · Diec · 2003 [cited by applicant]
US 6609150B2 · Lee · 2003 [cited by applicant]
US 6621834B1 · Scherpbier · 2003 [cited by applicant]
US 6654032B1 · Zhu · 2003 [cited by applicant]
US 6665648B2 · Brodersen · 2003 [cited by applicant]
US 6665655B1 · Warner · 2003 [cited by applicant]
US 6684438B2 · Brodersen · 2004 [cited by applicant]
US 6711565B1 · Subramaniam · 2004 [cited by applicant]
US 6724399B1 · Katchour · 2004 [cited by applicant]
US 6728702B1 · Subramaniam · 2004 [cited by applicant]
US 6728960B1 · Loomans · 2004 [cited by applicant]
US 6732095B1 · Warshavsky · 2004 [cited by applicant]
US 6732100B1 · Brodersen · 2004 [cited by applicant]
US 6732111B2 · Brodersen · 2004 [cited by applicant]
US 6754681B2 · Brodersen · 2004 [cited by applicant]
US 6763351B1 · Subramaniam · 2004 [cited by applicant]
US 6763501B1 · Zhu · 2004 [cited by applicant]
US 6768904B2 · Kim · 2004 [cited by applicant]
US 6782383B2 · Subramaniam · 2004 [cited by applicant]
US 6804330B1 · Jones · 2004 [cited by applicant]
US 6826565B2 · Ritchie · 2004 [cited by applicant]
US 6826582B1 · Chatterjee · 2004 [cited by applicant]
US 6826745B2 · Coker · 2004 [cited by applicant]
US 6829655B1 · Huang · 2004 [cited by applicant]
US 6842748B1 · Warner · 2005 [cited by applicant]
US 6850895B2 · Brodersen · 2005 [cited by applicant]
US 6850949B2 · Warner · 2005 [cited by applicant]
US 7340411B2 · Cook · 2008 [cited by applicant]
US 7620655B2 · Larsson · 2009 [cited by applicant]
US 10007509B1 · Qureshi · 2018 [cited by applicant]
US 10623390B1 · Rosenhouse · 2020 [cited by applicant]
US 10659329B1 · Zhao · 2020 [cited by examiner]
US 11025495B1 · Bhatnagar · 2021 [cited by applicant]
US 11062022B1 · Kalamkar · 2021 [cited by applicant]
US 11194566B1 · Gabrielson · 2021 [cited by applicant]
US 11438213B1 · Milley · 2022 [cited by applicant]
US 11467875B2 · Kwon · 2022 [cited by applicant]
US 11469944B1 · Lindholm · 2022 [cited by applicant]
US 11768672B1 · Silakov · 2023 [cited by examiner]
US 20010044791A1 · Richter · 2001 [cited by applicant]
US 20020072951A1 · Lee · 2002 [cited by applicant]
US 20020082892A1 · Raffel · 2002 [cited by applicant]
US 20020129352A1 · Brodersen · 2002 [cited by applicant]
US 20020140731A1 · Subramaniam · 2002 [cited by applicant]
US 20020143997A1 · Huang · 2002 [cited by applicant]
US 20020162090A1 · Parnell · 2002 [cited by applicant]
US 20020165742A1 · Robins · 2002 [cited by applicant]
US 20030004971A1 · Gong · 2003 [cited by applicant]
US 20030018705A1 · Chen · 2003 [cited by applicant]
US 20030018830A1 · Chen · 2003 [cited by applicant]
US 20030066031A1 · Laane · 2003 [cited by applicant]
US 20030066032A1 · Ramachandran · 2003 [cited by applicant]
US 20030069936A1 · Warner · 2003 [cited by applicant]
US 20030070000A1 · Coker · 2003 [cited by applicant]
US 20030070004A1 · Mukundan · 2003 [cited by applicant]
US 20030070005A1 · Mukundan · 2003 [cited by applicant]
US 20030074418A1 · Coker · 2003 [cited by applicant]
US 20030120675A1 · Stauber · 2003 [cited by applicant]
US 20030151633A1 · George · 2003 [cited by applicant]
US 20030159136A1 · Huang · 2003 [cited by applicant]
US 20030187921A1 · Diec · 2003 [cited by applicant]
US 20030189600A1 · Gune · 2003 [cited by applicant]
US 20030204427A1 · Gune · 2003 [cited by applicant]
US 20030206192A1 · Chen · 2003 [cited by applicant]
US 20030225730A1 · Warner · 2003 [cited by applicant]
US 20040001092A1 · Rothwein · 2004 [cited by applicant]
US 20040010489A1 · Rio · 2004 [cited by applicant]
US 20040015981A1 · Coker · 2004 [cited by applicant]
US 20040027388A1 · Berg · 2004 [cited by applicant]
US 20040128001A1 · Levin · 2004 [cited by applicant]
US 20040186860A1 · Lee · 2004 [cited by applicant]
US 20040193510A1 · Catahan · 2004 [cited by applicant]
US 20040199489A1 · Barnes-Leon · 2004 [cited by applicant]
US 20040199536A1 · Barnes Leon · 2004 [cited by applicant]
US 20040199543A1 · Braud · 2004 [cited by applicant]
US 20040249854A1 · Barnes-Leon · 2004 [cited by applicant]
US 20040260534A1 · Pak · 2004 [cited by applicant]
US 20040260659A1 · Chan · 2004 [cited by applicant]
US 20040268299A1 · Lei · 2004 [cited by applicant]
US 20050050555A1 · Exley · 2005 [cited by applicant]
US 20050091098A1 · Brodersen · 2005 [cited by applicant]
US 20140105030A1 · Kogan · 2014 [cited by applicant]
US 20160065420A1 · Burton · 2016 [cited by applicant]
US 20160155076A1 · Fix · 2016 [cited by applicant]
US 20170118041A1 · Bhattacharya · 2017 [cited by applicant]
US 20200073655A1 · Park · 2020 [cited by applicant]
US 20200366569A1 · White · 2020 [cited by applicant]
US 20210173713A1 · Lei · 2021 [cited by applicant]
US 20210224132A1 · Barsalou · 2021 [cited by applicant]
US 20210311764A1 · Rosoff · 2021 [cited by applicant]
US 20210311796A1 · Lei · 2021 [cited by applicant]
US 20210328913A1 · Nainar · 2021 [cited by applicant]
US 20210349801A1 · Rafey · 2021 [cited by applicant]
US 20220035646A1 · Ibryam · 2022 [cited by applicant]
US 20220060398A1 · Shishir · 2022 [cited by applicant]
US 20220111516A1 · Yeap · 2022 [cited by applicant]
US 20220124150A1 · Alagna · 2022 [cited by applicant]
US 20220247725A1 · Panchamia · 2022 [cited by applicant]
US 20220326867A1 · Thakkar · 2022 [cited by applicant]
US 20220326929A1 · Sharma · 2022 [cited by applicant]
US 20220329524A1 · Sinha · 2022 [cited by applicant]
US 20220334825A1 · Swirydczuk · 2022 [cited by applicant]
US 20220407773A1 · Kempanna · 2022 [cited by examiner]
US 20220407820A1 · Kempanna · 2022 [cited by examiner]
CN 112596762A · 2021 [cited by applicant]
WO 2021150366A1 · 2021 [cited by applicant]