IP Library Granted Patent US 9,524,185
Granted Patent B2
US 9,524,185 · App. 14/793,271 · Granted Dec 20, 2016

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/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 9,524,185
App. No.
14/793,271
Granted
Dec 20, 2016
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 (76)

1. A method for managing a plurality of machines operating as a machine farm within a datacenter, wherein the method comprises:

executing an agent provisioning script at a control hub within the datacenter instructing each of 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 one or more 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 by: a) allocating an exclusive memory space for each of the one or more applications within the memory of the respective machine, and b) uniquely associating a dynamically generated URL class loader for each of the one or more applications within the exclusive memory space allocated to each of the one or more applications.

2. The method of claim 1 , wherein the agent provisioning script instructing each of the plurality of machines to download and instantiate the lightweight agent comprises the agent provisioning script to:

access a list specifying a location name for each of the plurality of machines to be provisioned with the lightweight agent; and

for each of the plurality of machines specified by the list:

a) log in to a command shell on the specified machine from the control hub;

b) instruct, by issuing commands to the command shell, the specified machine to download the lightweight agent from the control hub; and

c) instruct, by issuing the commands to the command shell, the specified machine to start the lightweight agent.

3. The method of claim 1 :

wherein each of the plurality of machines pulls the lightweight agent from the control hub responsive to the agent provisioning script; and

wherein each of the plurality of machines pulls the one or more applications and the one or more dependencies for each of the one or more applications from a central application repository.

4. The method of claim 3 , wherein the control hub and the central application repository each reside on physically separate and distinct computer servers, and wherein each of the plurality of machines are physically separate and distinct computer servers from the control hub and the central application repository.

5. The method of claim 4 , wherein each of the physically separate and distinct computer servers and the control hub are communicatively interfaced through a high speed network of the datacenter.

6. The method of claim 1 , wherein the lightweight agent is downloaded and instantiated within memory of each of the plurality of respective machines, and wherein execution of the lightweight agent is isolated to the memory of each of the respective machines.

7. The method of claim 6 , wherein the one or more applications and the one or more dependencies for each of the one or more applications reside only in the memory of the respective plurality of machines.

8. The method of claim 7 , wherein each of the lightweight agent, the one or more applications, and the one or more dependencies for each of the one or more applications do not access or reference hard disk drive storage on any of the plurality of respective machines having the lightweight agent downloaded and instantiated thereon.

9. The method of claim 1 :

wherein the lightweight agent implements a container for managing class objects; and

wherein loading the one or more applications into the memory of the respective plurality of machines further comprises:

loading, via the uniquely associated URL class loader, each respective application into its exclusive memory space and each of the one or more dependencies into the exclusive memory space for the respective application based on the plurality of URL references pushed to the lightweight agent.

10. The method of claim 9 , wherein the container for managing class objects implemented via the lightweight agent comprises a managed bean server.

11. The method of claim 1 , wherein the control hub manages a database specifying relationships between all available applications and all dependencies for the available applications.

12. The method of claim 1 , wherein the control hub manages an upgrade procedure for the plurality of machines, the upgrade procedure comprising:

the control hub issuing a graceful interrupt to each of the plurality of machines, wherein the graceful interrupt permits each respective machine to complete currently executing work;

wherein each of the plurality of respective machines to:

a) allow the one or more applications currently executing work to complete;

b) stop accepting work instructions responsive to the graceful interrupt issued by the control hub;

c) respond to the control hub with a notification indicating the respective machine is ready to receive instructions from the control hub; and

d) receive upgrade instructions from the control hub.

13. The method of claim 12 , wherein the upgrade procedure further comprises the control hub, responsive to receiving the notification from each respective machine, to perform operations including:

unloading, via the machine's lightweight agent, a test class installation from the machine's memory;

unloading, via the machine's lightweight agent, all dependencies associated with the test class installation from the machine's memory as specified by the control hub;

download and install, via the machine's lightweight agent, a new application from an application repository to the machine's memory as specified by the control hub;

download and install, via the machine's lightweight agent, all dependencies for the new application from the application repository to the machine's memory as specified by the control hub; and

start, via the machine's lightweight agent, the new application within the respective machine.

14. A non-transitory computer readable storage medium having instructions stored thereon that, when executed by control hub having a processor and memory therein, the instructions cause the control hub to perform operations for managing a plurality of machines within a datacenter, wherein the operations to be performed comprise:

executing an agent provisioning script at a control hub within the datacenter instructing each of 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 one or more applications;

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 by: a) allocating an exclusive memory space for each of the one or more applications within the memory of the respective machine, and b) uniquely associating a dynamically generated URL class loader for each of the one or more applications within the exclusive memory space allocated to each of the one or more applications.

15. The non-transitory computer readable storage medium of claim 14 , wherein the agent provisioning script instructing each of the plurality of machines to download and instantiate the lightweight agent comprises the agent provisioning script to:

access a list specifying a location name for each of the plurality of machines to be provisioned with the lightweight agent; and

for each of the plurality of machines specified by the list:

a) log in to a command shell on the specified machine from the control hub;

b) instruct, by issuing commands to the command shell, the specified machine to download the lightweight agent from the control hub; and

c) instruct, by issuing the commands to the command shell, the specified machine to start the lightweight agent.

16. The non-transitory computer readable storage medium of claim 14 :

wherein each of the plurality of machines pulls the lightweight agent from the control hub responsive to the agent provisioning script;

wherein each of the plurality of machines pulls the one or more applications and the one or more dependencies for each of the one or more applications from a central application repository;

wherein the control hub and the central application repository each reside on physically separate and distinct computer servers, and wherein each of the plurality of machines are physically separate and distinct computer servers from the control hub and the central application repository; and

wherein each of the physically separate and distinct computer servers and the control hub are communicatively interfaced through a high speed network of the datacenter.

17. The non-transitory computer readable storage medium of claim 14 :

wherein the lightweight agent is downloaded and instantiated within memory of each of the plurality of respective machines, and wherein execution of the lightweight agent is isolated to the memory of each of the respective machines;

wherein the one or more applications and the one or more dependencies for each of the one or more applications reside only in the memory of the respective plurality of machines; and

wherein each of the lightweight agent, the one or more applications, and the one or more dependencies for each of the one or more applications do not access or reference hard disk drive storage on any of the plurality of respective machines having the lightweight agent downloaded and instantiated thereon.

18. The non-transitory computer readable storage medium of claim 14 :

wherein the lightweight agent implements a container for managing class objects;

wherein loading the one or more applications into the memory of the respective plurality of machines further comprises: loading, via the uniquely associated URL class loader, each respective application into its exclusive memory space and each of the one or more dependencies into the exclusive memory space for the respective application based on the plurality of URL references pushed to the lightweight agent; and

wherein the container for managing class objects implemented via the lightweight agent comprises a managed bean server.

19. A data center comprising:

a control hub having a memory and processor therein to execute instructions;

an application repository having a memory and processor therein to execute instructions, a data store, one or more applications stored upon the data store, and one or more dependencies for the one or more applications stored upon the data store; and

a plurality of machines, each having a memory and processor therein to execute instructions;

wherein an agent provisioning script within the control hub to instruct each of the plurality of machines to download and instantiate a lightweight agent,

wherein the agent provisioning script on the control hub to instruct each of the plurality of machines to download and instantiate the lightweight agent comprises the agent provisioning script to:

access a list specifying a location name for each of the plurality of machines to be provisioned with the lightweight agent; and

for each of the plurality of machines specified by the list:

load, 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 by: a) allocating an exclusive memory space for each of the one or more applications within the memory of the respective machine, and b) uniquely associating a dynamically generated URL class loader for each of the one or more applications within the exclusive memory space allocated to each of the one or more applications.

20. The data center of claim 19 :

wherein the wherein an agent provisioning script within the control hub to instruct each of the plurality of machines to download and instantiate a lightweight agent comprises the agent provisioning script to:

access a list specifying a location name for each of the plurality of machines to be provisioned with the lightweight agent; and

for each of the plurality of machines specified by the list:

a) log in to a command shell on the specified machine from the control hub;

b) instruct, by issuing commands to the command shell, the specified machine to download the lightweight agent from the control hub; and

c) instruct, by issuing the commands to the command shell, the specified machine to start the lightweight agent.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2016
From: KOTHARI, PALLAV; METTING VAN RIJN, PHILIP OLIVER
To: SALESFORCE.COM, INC.
Reel/Frame 039215/0774 →
Continuity (3)
Division 13052897 · Mar 21, 2011
Provisional Application 61345977 · May 18, 2010
Related Publication 20150309833A1 · Oct 29, 2015