IP Library Granted Patent US 11,544,052
Granted Patent B2
US 11,544,052 · App. 17/399,467 · Granted Jan 3, 2023

Tenant declarative deployments with release staggering

Inventors: Eric Liljeback (Burlington, MA); Derek Forrest (Burlington, MA)
Assignee: Salesforce, Inc.
G06F8/65G06F9/4881
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,544,052
App. No.
17/399,467
Granted
Jan 3, 2023
Kind
B2
Abstract

A method that includes identifying a declarative deployment file defining a deployment configuration for multiple logical single-tenant system stacks supported by a compute container system, where the deployment configuration includes a set of deployment criteria and a failure threshold. The method may further include determining, based on the set of deployment criteria, a set of deployment groups for implementing one or more system updates, where the set of deployment groups includes a first deployment group and the first deployment group includes a first set of logical single-tenant system stacks from the multiple logical single-tenant system stacks supported by the compute container system. The method may further include implementing the one or more system updates for the set of deployment groups based on the failure threshold.

Claims (57)

1. A method for software deployment at a compute container system, comprising:

identifying a declarative deployment file that defines a deployment configuration for a plurality of logical single-tenant system stacks supported by the compute container system, the deployment configuration comprising at least a set of deployment criteria and a failure threshold;

determining, based at least in part on the set of deployment criteria, a set of deployment groups for implementing one or more system updates, the set of deployment groups comprising at least a first deployment group, the first deployment group comprising a first set of logical single-tenant system stacks from the plurality of logical single-tenant system stacks; and

implementing the one or more system updates for the set of deployment groups based at least in part on the failure threshold.

2. The method of claim 1 , further comprising:

determining that the one or more system updates for the first deployment group have exceeded the failure threshold; and

refraining from implementing the one or more system updates for other deployment groups in the set of deployment groups based at least in part on the one or more system updates exceeding the failure threshold.

3. The method of claim 2 , further comprising:

identifying a last known good version for the first set of logical single-tenant system stacks in the first deployment group based at least in part on the one or more system updates exceeding the failure threshold; and

implementing the last known good version for the first set of logical single-tenant system stacks based at least in part on the identifying.

4. The method of claim 2 , further comprising:

generating deployment metadata based at least in part on the one or more system updates exceeding the failure threshold, the deployment metadata indicating a version of the one or more system updates that exceeded the failure threshold, a time at which the one or more system updates exceeded the failure threshold, a stack component at which the one or more system updates exceeded the failure threshold, or a combination thereof; and

implementing subsequent system updates for the set of deployment groups based at least in part on the deployment metadata.

5. The method of claim 1 , further comprising:

determining a staggered deployment schedule for the set of deployment groups based at least in part on the deployment configuration, wherein implementing the one or more system updates comprises:

implementing the one or more system updates for the first deployment group prior to implementing the one or more system updates for a second deployment group from the set of deployment groups based at least in part on the staggered deployment schedule.

6. The method of claim 5 , wherein the staggered deployment schedule is based at least in part on a number of customers supported by the first set of logical single-tenant system stacks in the first deployment group and a number of customers supported by a second set of logical single-tenant system stacks in the second deployment group.

7. The method of claim 1 , wherein:

the set of deployment criteria comprises a deployment group size, a number of deployment groups in the set of deployment groups, one or more logical single-tenant system stack types, one or more logical single-tenant system stack environments, a maximum time duration for the one or more system updates, or a combination thereof; and

the failure threshold comprises a maximum error threshold for the one or more system updates.

8. The method of claim 1 , further comprising:

determining that the one or more system updates for the first deployment group have exceeded a maximum time duration; and

refraining from implementing the one or more system updates for other deployment groups in the set of deployment groups based at least in part on the one or more system updates exceeding the maximum time duration.

9. The method of claim 1 , further comprising:

determining a number of logical single-tenant system stacks to include in the first set of logical single-tenant system stacks based at least in part on a deployment group size specified in the set of deployment criteria.

10. The method of claim 1 , wherein:

the first set of logical single-tenant system stacks comprises a first logical single-tenant system stack; and

the first logical single-tenant system stack comprises an application server component, a web server component, and a database.

11. The method of claim 1 , further comprising:

determining to implement the one or more system updates at a first logical single-tenant system stack prior to implementing the one or more system updates at the first set of logical single-tenant system stacks based at least in part on the deployment configuration specifying that the one or more system updates are to be implemented at the first logical single-tenant system stack before implementing the one or more system updates in batches of logical single-tenant system stacks.

12. The method of claim 1 , further comprising:

determining that each logical single-tenant system stack of the first set of logical single-tenant system stacks is available for updating prior to implementing the one or more system updates.

13. The method of claim 12 , wherein an availability of a logical single-tenant system stack is based at least in part on whether an active process is being executed, whether a software version criterion is satisfied, whether a maintenance window is satisfied, or a combination thereof.

14. The method of claim 1 , further comprising:

transmitting, to the set of deployment groups, a polling message associated with the one or more system updates; and

receiving, from at least one deployment group in the set of deployment groups and based at least in part on the polling message, one or more notifications associated with the one or more system updates, wherein implementing the one or more system updates is based at least in part on receiving the one or more notifications.

15. The method of claim 14 , wherein the one or more notifications indicate a completion status of the one or more system updates, an error status of the one or more system updates, an elapsed time of the one or more system updates, or a combination thereof.

16. An apparatus for software deployment at a compute container system, comprising:

a processor;

memory coupled with the processor; and

instructions stored in the memory and executable by the processor to cause the apparatus to:

identify a declarative deployment file that defines a deployment configuration for a plurality of logical single-tenant system stacks supported by the compute container system, the deployment configuration comprising at least a set of deployment criteria and a failure threshold;

determine, based at least in part on the set of deployment criteria, a set of deployment groups for implementing one or more system updates, the set of deployment groups comprising at least a first deployment group, the first deployment group comprising a first set of logical single-tenant system stacks from the plurality of logical single-tenant system stacks; and

implement the one or more system updates for the set of deployment groups based at least in part on the failure threshold.

17. The apparatus of claim 16 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine that the one or more system updates for the first deployment group have exceeded the failure threshold; and

refrain from implementing the one or more system updates for other deployment groups in the set of deployment groups based at least in part on the one or more system updates exceeding the failure threshold.

18. The apparatus of claim 16 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine a staggered deployment schedule for the set of deployment groups based at least in part on the deployment configuration, wherein the instructions to implement the one or more system updates are executable by the processor to cause the apparatus to:

implement the one or more system updates for the first deployment group prior to implementing the one or more system updates for a second deployment group from the set of deployment groups based at least in part on the staggered deployment schedule.

19. The apparatus of claim 16 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine that the one or more system updates for the first deployment group have exceeded a maximum time duration; and

refrain from implementing the one or more system updates for other deployment groups in the set of deployment groups based at least in part on the one or more system updates exceeding the maximum time duration.

20. A non-transitory computer-readable medium storing code for software deployment at a compute container system, the code comprising instructions executable by a processor to:

identify a declarative deployment file that defines a deployment configuration for a plurality of logical single tenant system stacks supported by the compute container system, the deployment configuration comprising at least a set of deployment criteria and a failure threshold;

determine, based at least in part on the set of deployment criteria, a set of deployment groups for implementing one or more system updates, the set of deployment groups comprising at least a first deployment group, the first deployment group comprising a first set of logical single tenant system stacks from the plurality of logical single tenant system stacks; and

implement the one or more system updates for the set of deployment groups based at least in part on the failure threshold.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0571 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2021
From: FORREST, DEREK; LILJEBACK, ERIC
To: SALESFORCE.COM, INC.
Reel/Frame 057148/0104 →
Cited By (1)
US 12,438,773