IP Library Granted Patent US 12,217,082
Granted Patent B2
US 12,217,082 · App. 18/486,527 · Granted Feb 4, 2025

Methods and systems for automating deployment of applications in a multi-tenant database environment

Inventors: Pallav Kothari (San Francisco, CA); Phillip Oliver Metting van Rijn (San Francisco, CA)
Assignee: Salesforce, Inc.
G06F9/465G06F8/60G06F9/5016G06F9/54
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,217,082
App. No.
18/486,527
Granted
Feb 4, 2025
Kind
B2
Abstract

In accordance with embodiments disclosed herein, there are provided mechanisms and methods for automating deployment of applications in a multi-tenant database environment. For example, in one embodiment, mechanisms include managing a plurality of machines operating as a machine farm within a datacenter by executing an agent provisioning script at a control hub, instructing the plurality of machines to download and instantiate a lightweight agent; pushing a plurality of URL (Uniform Resource Locator) references from the control hub to the instantiated lightweight agent on each of the plurality of machines specifying one or more applications to be provisioned and one or more dependencies for each of the applications; and loading, via the lightweight agent at each of the plurality of machines, the one or more applications and the one or more dependencies for each of the one or more applications into memory of each respective machine.

Claims (41)

1. A method to deploy an application upgrade to a deployment group, the deployment group comprising machines of a machine farm, the method comprising:

executing, via a processor and a memory of a control hub of the machine farm, a code deployment agent to obtain the application upgrade, wherein the executing the code deployment agent comprises:

accessing a list specifying a location of each of the machines of the machine farm to be provided the application upgrade;

retrieving, by the code deployment agent, a unique reference to determine a respective Uniform Resource Locator (URL) from which to load the application upgrade and one or more dependencies for the application upgrade for each of the machines;

loading, by the code deployment agent, the application upgrade and the one or more dependencies from the URL into memory for each of the machines; and

executing one or more applications containing the application upgrade from the memory of the machine.

2. The method of claim 1 , wherein the code deployment agent loads the application upgrade according to the list specifying the location of each of the machines of the machine farm to be provided the application upgrade.

3. The method of claim 1 , wherein the retrieving is from a plurality of URL references.

4. The method of claim 1 , wherein the deployment group comprises a portion of the machines of the machine farm.

5. The method of claim 1 , wherein the machines are tagged for identification during deployment.

6. The method of claim 1 , wherein the executing the code deployment agent further comprises loading a provisioning script to each of the machines of the machine farm to be provided the application upgrade.

7. The method of claim 1 , wherein the unique references specify one or more of the following characteristics of the application upgrades: (i) name; (ii) file type; (iii) version identifier; (iv) electronic tag; (v) commit ID; (vi) assigned user name; and (vii) assigned group name.

8. The method of claim 1 , wherein the loading the application upgrade into the memory of the machine comprises:

allocating a respective memory space for the application upgrade within the memory of the machine; and

associating a dynamically generated class loader for the application upgrade within the respective memory space allocated to the application upgrade.

9. The method of claim 1 , wherein the machine farm is operating within a datacenter.

10. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a control hub of a machine farm having access to a processor and memory, cause a machine to perform operations comprising:

executing, via the processor and the memory of the control hub of the machine farm, a code deployment agent to obtain an application upgrade, wherein the executing the code deployment agent comprises:

accessing a list specifying a location of each of the machines of the machine farm to be provided the application upgrade;

retrieving, by the code deployment agent, a unique reference to determine a respective Uniform Resource Locator (URL) from which to load the application upgrade and one or more dependencies for the application upgrade for each of the machines;

loading, by the code deployment agent, the application upgrade and the one or more dependencies from the URL into memory for each of the machines; and

executing one or more applications containing the application upgrade from the memory of the machine.

11. The non-transitory computer readable storage media of claim 10 , wherein the code deployment agent loads the application upgrade according to the list specifying the location of each of the machines of the machine farm to be provided the application upgrade.

12. The non-transitory computer readable storage media of claim 10 , wherein the retrieving is from a plurality of URL references.

13. The non-transitory computer readable storage media of claim 10 , wherein the machines are tagged for identification during deployment.

14. The non-transitory computer readable storage media of claim 10 , wherein the executing the code deployment agent further comprises loading a provisioning script to each of the machines of the machine farm to be provided the application upgrade.

15. The non-transitory computer readable storage media of claim 10 , wherein the unique references specify one or more of the following characteristics of the application upgrades: (i) name; (ii) file type; (iii) version identifier; (iv) electronic tag; (v) commit ID; (vi) assigned user name; and (vii) assigned group name.

16. The non-transitory computer readable storage media of claim 10 , wherein the loading the application upgrade into the memory of the machine comprises:

allocating a respective memory space for the application upgrade within the memory of the machine; and

associating a dynamically generated class loader for the application upgrade within the respective memory space allocated to the application upgrade.

17. The non-transitory computer readable storage media of claim 10 , wherein the machine farm is operating within a datacenter.

18. A system configured to deploy an application upgrade to a deployment group, the deployment group comprising machines of a machine farm, the system comprising:

a memory to store instructions;

a processor to execute the instructions stored in the memory, wherein the instructions, when executed by the processor, cause the system to perform operations comprising:

executing a code deployment agent to obtain the application upgrade, wherein the executing the code deployment agent comprises:

accessing a list specifying a location of each of the machines of the machine farm to be provided the application upgrade;

retrieving, by the code deployment agent, a unique reference to determine a respective Uniform Resource Locator (URL) from which to load the application upgrade and one or more dependencies for the application upgrade for each of the machines;

loading, by the code deployment agent, the application upgrade and the one or more dependencies from the URL into memory for each of the machines; and

executing one or more applications containing the application upgrade from the memory of the machine.

19. The system of claim 18 , wherein the code deployment agent loads the application upgrade according to the list specifying the location of each of the machines of the machine farm to be provided the application upgrade.

20. The system of claim 18 , wherein the executing the code deployment agent further comprises loading a provisioning script to each of the machines of the machine farm to be provided the application upgrade.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2023
From: KOTHARI, PALLAV; METTING VAN RIJN, PHILLIP OLIVER
To: SALESFORCE.COM, INC.
Reel/Frame 065212/0758 →
CHANGE OF NAME Recorded Oct 13, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065237/0910 →
Continuity (7)
Continuation 17160257 · Jan 27, 2021
Division 16681017 · Nov 12, 2019
Division 15365772 · Nov 30, 2016
Division 14793271 · Jul 7, 2015
Division 13052897 · Mar 21, 2011
Provisional Application 61345977 · May 18, 2010
Related Publication 20240036913A1 · Feb 1, 2024
References Cited (131)
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 5918059A · Tavallaei · 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 7107592B2 · Taylor · 2006 [cited by applicant]
US 7340411B2 · Cook · 2008 [cited by applicant]
US 7620655B2 · Larsson · 2009 [cited by applicant]
US 9547564B1 · Troutman · 2017 [cited by applicant]
US 20010044791A1 · Richter · 2001 [cited by applicant]
US 20020022986A1 · Coker · 2002 [cited by applicant]
US 20020029161A1 · Brodersen · 2002 [cited by applicant]
US 20020029376A1 · Ambrose · 2002 [cited by applicant]
US 20020035577A1 · Brodersen · 2002 [cited by applicant]
US 20020042264A1 · Kim · 2002 [cited by applicant]
US 20020042843A1 · Diec · 2002 [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 20020152102A1 · Brodersen · 2002 [cited by applicant]
US 20020161734A1 · Stauber · 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 20030088545A1 · Subramaniam · 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 20030191743A1 · Brodersen · 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 20050071273A1 · Vroman · 2005 [cited by applicant]
US 20050091098A1 · Brodersen · 2005 [cited by applicant]
US 20050166180A1 · Lemon · 2005 [cited by applicant]
US 20070005738A1 · Alexion-Tiernan · 2007 [cited by applicant]
US 20110022694A1 · Dalal · 2011 [cited by applicant]
US 20110225405A1 · Lyons · 2011 [cited by applicant]
US 20180113684A1 · Dawson · 2018 [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 14/793,271, dated Apr. 7, 2016, 14 pages. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 13/052,897 dated Mar. 4, 2015, 18 pages. [cited by applicant]
Office Action (Final Rejection) dated Jun. 16, 2023 for U.S. Appl. No. 17/160,257 (pp. 1-8). [cited by applicant]
Office Action (Notice of Allowance and Fees Due (PTOL-85)) dated Jul. 26, 2023 for U.S. Appl. No. 17/160,257 (pp. 1-5). [cited by applicant]
Office Action for U.S. Appl. No. 13/052,897 dated Jun. 19, 2014, 13 pages. [cited by applicant]