IP Library Granted Patent US 11,494,223
Granted Patent B2
US 11,494,223 · App. 16/681,017 · Granted Nov 8, 2022

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.com, 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 11,494,223
App. No.
16/681,017
Granted
Nov 8, 2022
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 (54)

1. A method to deploy and upgrade applications performed by a plurality of virtual machines, each virtual machine having access to a processor and a memory to perform the method, wherein the method comprises:

executing via the processor and the memory of each virtual machine a loading agent to load one or more applications to each virtual machine via an upgrade procedure causing the loading agent to perform operations including:

accessing a list specifying a location for each virtual machine to be provisioned with the one or more applications;

retrieving, by the loading agent executing at each virtual machine, a plurality of unique references specifying respective locations from where to load the one or more applications to each virtual machine and one or more dependencies for each of the one or more applications to be loaded to each virtual machine;

issuing an interrupt command to each virtual machine instructing the virtual machine to stop accepting work instructions, wherein the interrupt command is executed based on a schedule associated with each virtual machine;

unloading, via the loading agent, existing applications and dependencies on each virtual machine;

issuing upgrade instructions to each virtual machine;

loading the one or more applications from the respective locations and the one or more dependencies for each one of the one or more applications to be loaded to each virtual machine as specified by the plurality of unique references, into the memory of each virtual machine; and

staging the applications on each virtual machine pursuant to the upgrade instructions,

wherein the upgrade instructions remove the plurality of unique references retrieved at each virtual machine and associated classloaders, wherein the one or more applications are reloaded and the classloaders recreated for future execution.

2. The method of claim 1 , wherein the loading agent is an agent provisioning script, wherein loading the one or more scripts integrates and automates deployment and upgrading of applications on each virtual machine.

3. The method of claim 1 , wherein the deployment and upgrading of applications is configured via the loading agent serving as a master document.

4. The method of claim 1 , wherein each virtual machine is deployed on top of physical computing infrastructure.

5. The method of claim 4 , wherein the loading agent provides a basic framework at each virtual machine to be expanded upon via:

loading at each virtual machine the one or more applications; and

loading the one or more dependencies for each of the one or more applications.

6. The method of claim 1 , wherein a control hub instructs the loading agent, via a lightweight agent, to select the one or more dependencies for each of the one or more applications.

7. The method of claim 6 , wherein the lightweight agent stages the one or more applications using instructions provided by the loading agent.

8. The method of claim 7 , wherein the lightweight agent sends recommendations about an execution environment to the control hub, wherein the loading agent executes the recommendations to set up an appropriate execution environment to run the one or more applications.

9. The method of claim 7 , wherein the lightweight agent is selected from a pool to stage the one or more applications.

10. The method of claim 1 , wherein the loading agent supports Java related environments, wherein the loading agent deploys independently of commands at a command interface.

11. The method of claim 1 , wherein loading, by the loading agent executing at each virtual machine, the one or more applications from the respective locations as specified by the plurality of unique references, into the memory of the virtual machine, comprises:

allocating an respective memory space for each of the one or more applications within the memory of the virtual machine; and

uniquely associating a dynamically generated class loader for each of the one or more applications within the respective memory space allocated to each of the one or more applications.

12. The method of claim 1 , wherein the plurality of virtual machines constitute a virtual machine farm operating within a datacenter.

13. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a virtual machine having access to a processor and memory, causes a loading agent to load one or more applications to each of a plurality of virtual machines via an upgrade procedure by causing the loading agent to perform operations including:

accessing a list specifying a location for each virtual machine to be provisioned with the one or more applications;

retrieving, by the loading agent executing at each virtual machine, a plurality of unique references specifying respective locations from where to load the one or more applications to each virtual machine and one or more dependencies for each of the one or more applications to be loaded to each virtual machine;

issuing an interrupt command to each virtual machine instructing the virtual machine to stop accepting work instructions, wherein the interrupt command is executed based on a schedule associated with each virtual machine;

unloading, via the loading agent, existing applications and dependencies on each virtual machine;

issuing upgrade instructions to each virtual machine;

loading the one or more applications from the respective locations and the one or more dependencies for each one of the one or more applications to be loaded to each virtual machine as specified by the plurality of unique references, into the memory of each virtual machine; and

staging the applications on each virtual machine pursuant to the upgrade instructions,

wherein the upgrade instructions remove the plurality of unique references retrieved at each virtual machine and associated classloaders, wherein the one or more applications are reloaded and the classloaders recreated for future execution.

14. The non-transitory computer readable storage media of claim 13 , wherein the loading agent is an agent provisioning script, wherein loading the one or more scripts integrates and automates deployment and upgrading of applications on each virtual machine.

15. The non-transitory computer readable storage media of claim 13 , wherein the deployment and upgrading of applications is configured via the loading agent serving as a master document.

16. The non-transitory computer readable storage media of claim 13 , wherein each virtual machine is deployed on top of physical computing infrastructure.

17. The non-transitory computer readable storage media of claim 13 , wherein loading, by the loading agent executing at each virtual machine, the one or more applications from the respective locations as specified by the plurality of unique references, into the memory of the virtual machine, comprises:

allocating an respective memory space for each of the one or more applications within the memory of the virtual machine; and

uniquely associating a dynamically generated class loader for each of the one or more applications within the respective memory space allocated to each of the one or more applications.

18. The non-transitory computer readable storage media of claim 13 , wherein the plurality of virtual machines constitute a virtual machine farm operating within a datacenter.

19. A virtual machine configured to provision one or more applications, wherein the virtual machine comprises:

a memory to store instructions;

a set of one or more processors to execute the instructions stored in the memory;

a non-transitory machine-readable storage medium that provides instructions that, when executed by the set of one or more processors, the instructions stored in the memory are configurable to cause the virtual machine to instantiate a loading agent to execute via the set of one or more processors and the memory of the virtual machine by performing operations including:

accessing a list specifying a location for each virtual machine to be provisioned with the one or more applications;

retrieving, by the loading agent executing at each virtual machine, a plurality of unique references specifying respective locations from where to load the one or more applications to each virtual machine and one or more dependencies for each of the one or more applications to be loaded to each virtual machine;

issuing an interrupt command to each virtual machine instructing the virtual machine to stop accepting work instructions, wherein the interrupt command is executed based on a schedule associated with each virtual machine;

unloading, via the loading agent, existing applications and dependencies on each virtual machine;

issuing upgrade instructions to each virtual machine;

loading the one or more applications from the respective locations and the one or more dependencies for each one of the one or more applications to be loaded to each virtual machine as specified by the plurality of unique references, into the memory of each virtual machine; and

staging the applications on each virtual machine pursuant to the upgrade instructions,

wherein the upgrade instructions remove the plurality of unique references retrieved at each virtual machine and associated classloaders, wherein the one or more applications are reloaded and the classloaders recreated for future execution.

20. The virtual machine of claim 19 wherein the deployment and upgrading of applications is configured via the loading agent serving as a master document.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2021
From: KOTHARI, PALLAV; METTING VAN RIJN, PHILIP OLIVER
To: SALESFORCE.COM, INC.
Reel/Frame 057515/0086 →
Continuity (5)
Division 15365772 · Nov 30, 2016
Division 14793271 · Jul 7, 2015
Division 13052897 · Mar 21, 2011
Provisional Application 61345977 · May 18, 2010
Related Publication 20200150998A1 · May 14, 2020