IP Library Granted Patent US 12,321,338
Granted Patent B2
US 12,321,338 · App. 18/417,790 · Granted Jun 3, 2025

Mechanisms for deploying database clusters

Inventors: Varun Jobanputra (New York City, NY); Joshua Gruenberg (Bozeman, MT)
Assignee: Salesforce, Inc.
G06F16/24G06F16/213G06F16/214G06F16/219G06F16/23G06F16/27
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,321,338
App. No.
18/417,790
Granted
Jun 3, 2025
Kind
B2
Abstract

Techniques are disclosed that pertain to deploying immutable instances of a system. A computer system may maintain an active generation value that indicates an immutable instance of a database system that is permitted to write data to a database. The computer system may deploy a first immutable instance of the database system and update the active generation value to permit the first immutable instance to write data to the database. The computer system may receive a request to deploy a second immutable instance of the database system that includes an update not found in the first immutable instance. The computer system may deploy the second immutable instance and update the active generation value to cause the first immutable instance to cease writing data to the database and to permit the second immutable instance to write data to the database.

Claims (71)

1. A method, comprising:

maintaining, by a computer system, an active generation value that is used to control which immutable instance of a set of servers is operating in an active mode;

deploying, by the computer system, a first immutable instance of the set of servers, including:

assigning a first generation value to the first immutable instance; and

updating the active generation value to cause the first immutable instance to operate in the active mode based on the first generation value;

receiving, by the computer system, a request to deploy a second immutable instance of the set of servers that includes an update not found in the first immutable instance; and

deploying, by the computer system, the second immutable instance, including:

assigning a second generation value to the second immutable instance; and

updating the active generation value to:

cause the first immutable instance to shut down based on the first generation value; and

cause the second immutable instance to operate in the active mode based on the second generation value.

2. The method of claim 1 , wherein the first and second immutable instances are deployed to a same cluster, and wherein the method further comprises:

maintaining, by the computer system, a plurality of pipelines having steps that facilitate deployment of an immutable instance of the set of servers,

wherein the deploying of the first immutable instance involves executing a first pipeline of the plurality of pipelines that facilitates deployment of an initial immutable instance of the set of servers to the cluster, and

wherein the deploying of the second immutable instance involves executing a second pipeline of the plurality of pipelines that facilitates deployment of an immutable instance of the set of servers to the cluster that is an update to the initial immutable instance.

3. The method of claim 2 , wherein the first pipeline is operable to create a cluster identifier in association with the first immutable instance, wherein the method further comprises:

executing, by the computer system, a third pipeline of the plurality of pipelines that is operable to select for execution between the first and second pipelines based on whether the cluster identifier exists.

4. The method of claim 1 , wherein the deploying of the second immutable instance includes:

performing a test to determine whether the second immutable instance is capable of taking over a role of the first immutable instance, wherein the updating of the active generation value to cause the second immutable instance to operate in the active mode is performed based on the test indicating that the second immutable instance is capable of taking over a role of the first immutable instance.

5. The method of claim 1 , further comprising:

before the updating of the active generation value to cause the second immutable instance to operate in the active mode, the computer system causing data to be loaded into a set of caches of the second immutable instance based on a set of caches of the first immutable instance.

6. The method of claim 1 , further comprising:

before the updating of the active generation value to cause the second immutable instance to operate in the active mode and in response to receiving a request from an application server to identify a server that is capable of processing requests from the application server, the computer system providing, to the application server, an address of a server included in the first immutable instance; and

after the updating of the active generation value to cause the second immutable instance to operate in the active mode and in response to receiving another request from the application server to identify a server capable of processing requests from the application server, the computer system providing, to the application server, an address of a server included in the second immutable instance.

7. The method of claim 1 , wherein the set of servers is a set of database servers, and wherein the second immutable instance is permitted to write data to a database of the computer system in the active mode.

8. The method of claim 7 , wherein the deploying of the second immutable instance includes:

instantiating the second immutable instance as a set of standby database servers operable to perform, after the updating of the active generation value to cause the second immutable instance to operate in the active mode, an election to elect one of the set of standby database servers to transition to an active database server.

9. The method of claim 7 , wherein the database is associated with a first catalog that includes a database schema, and wherein the method further includes:

creating, by the computer system, a second catalog that is derived from the first catalog and the update, wherein the database is associated with the first and second catalogs; and

after the updating of the active generation value to cause the second immutable instance to operate in the active mode, the computer system destroying the first catalog.

10. The method of claim 1 , further comprising:

receiving information in a first format that describes the second immutable instance having the update, wherein the first format cannot be interpreted by a deployer node; and

converting the information from the first format into a second format that can be interpreted by the deployer node, wherein the deploying of the second immutable instance includes instructing the deployer node to instantiate, based on the converted information, the second immutable instance using resources managed by the deployer node.

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

maintaining an active generation value that is used to control which immutable instance of a set of servers is operating in an active mode;

deploying a first immutable instance of the set of servers, including:

assigning a first generation value to the first immutable instance; and

updating the active generation value to cause the first immutable instance to operate in the active mode based on the first generation value;

receiving a request to deploy a second immutable instance of the set of servers that includes an update not found in the first immutable instance; and

deploying the second immutable instance, including:

assigning a second generation value to the second immutable instance; and

updating the active generation value to:

cause the first immutable instance to shut down based on the first generation value; and

cause the second immutable instance to operate in the active mode based on the second generation value.

12. The non-transitory computer-readable medium of claim 11 , wherein the deploying of the first immutable instance includes executing a first pipeline having a set of steps that facilitate deployment of an initial immutable instance to an environment, and wherein the deploying of the second immutable instance includes executing a second pipeline having a different set of steps that facilitate deployment of a subsequent immutable instance to the environment.

13. The non-transitory computer-readable medium of claim 11 , wherein the deploying of the second immutable instance includes:

performing a test to determine whether the second immutable instance is capable of taking over a role of the first immutable instance, wherein the updating of the active generation value to cause the second immutable instance to operate in the active mode is performed based on the test indicating that the second immutable instance is capable of taking over a role of the first immutable instance.

14. The non-transitory computer-readable medium of claim 11 , wherein the set of servers is a set of database servers, and wherein the second immutable instance is permitted to write data to a database of the computer system in the active mode.

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

creating a first database schema through which the first immutable instance accesses data from the database;

creating a second database schema through which the second immutable instance accesses data from the database; and

performing one or more post-deployment operations that include deleting the first database schema or the second database schema based on a version of an active database server of a database cluster associated with the first and second immutable instances.

16. A system, comprising:

at least one processor; and

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

maintaining an active generation value that is used to control which immutable instance of a set of servers is operating in an active mode;

deploying a first immutable instance of the set of servers, including:

assigning a first generation value to the first immutable instance; and

updating the active generation value to cause the first immutable instance to operate in the active mode based on the first generation value;

receiving a request to deploy a second immutable instance of the set of servers that includes an update not found in the first immutable instance; and

deploying the second immutable instance, including:

assigning a second generation value to the second immutable instance; and

updating the active generation value to:

cause the first immutable instance to shut down based on the first generation value; and

cause the second immutable instance to operate in the active mode based on the second generation value.

17. The system of claim 16 , wherein the deploying of the first immutable instance includes executing a first pipeline having a set of steps that facilitate deployment of an initial immutable instance to an environment, and wherein the deploying of the second immutable instance includes executing a second pipeline having a different set of steps that facilitate deployment of a subsequent immutable instance to the environment.

18. The system of claim 16 , wherein the deploying of the second immutable instance includes:

performing a test to determine whether the second immutable instance is capable of taking over a role of the first immutable instance, wherein the updating of the active generation value to cause the second immutable instance to operate in the active mode is performed based on the test indicating that the second immutable instance is capable of taking over a role of the first immutable instance.

19. The system of claim 16 , wherein the deploying of the second immutable instance includes:

before the updating of the active generation value to cause the second immutable instance to operate in the active mode, causing data to be loaded into a set of caches of the second immutable instance based on a set of caches of the first immutable instance.

20. The system of claim 16 , wherein the set of servers is a set of database servers, and wherein the second immutable instance is permitted to write data to a database in the active mode.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2024
From: JOBANPUTRA, VARUN; GRUENBERG, JOSHUA
To: SALESFORCE.COM, INC.
Reel/Frame 066202/0065 →
CHANGE OF NAME Recorded Jan 22, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 066361/0164 →
Continuity (2)
Continuation 17491102 · Sep 30, 2021
Related Publication 20240193154A1 · Jun 13, 2024
References Cited (19)
US 9098269B2 · Duffy et al. · 2015 [cited by applicant]
US 10042782B2 · Struttmann · 2018 [cited by applicant]
US 10055245B1 · Gupta et al. · 2018 [cited by applicant]
US 20080005182A1 · Gauthier et al. · 2008 [cited by applicant]
US 20080201701A1 · Hofhansl et al. · 2008 [cited by applicant]
US 20140067824A1 · DeLuca et al. · 2014 [cited by applicant]
US 20140095432A1 · Trumbull et al. · 2014 [cited by applicant]
US 20140114913A1 · Engelko et al. · 2014 [cited by applicant]
US 20140115176A1 · Kamboh et al. · 2014 [cited by applicant]
US 20170034023A1 · Nickolov et al. · 2017 [cited by applicant]
US 20180373708A1 · Martin et al. · 2018 [cited by applicant]
US 20190042638A1 · Jujjuri et al. · 2019 [cited by applicant]
US 20190045007A1 · Wyatt et al. · 2019 [cited by applicant]
US 20200097498A1 · Tang et al. · 2020 [cited by applicant]
US 20200125662A1 · Zhu et al. · 2020 [cited by applicant]
US 20200301943A1 · Robinson et al. · 2020 [cited by applicant]
US 20210318998A1 · Filip et al. · 2021 [cited by applicant]
US 20210319115A1 · Kassouf et al. · 2021 [cited by applicant]
US 20230060733A1 · Arora et al. · 2023 [cited by applicant]