System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
A system facilitates the design and implementation of large-scale applications, such as Internet Services and Websites, for distributed computer systems, such as server data centers, Internet data centers (IDCs), Web farms, and the like. The system has a modeling system and a deployment system. The modeling system permits developers to architect the hardware and software used to implement the applications in an abstract manner. The modeling system defines a set of components used to describe the functionality of an application. The model components are arranged and interconnected to form a scale-independent logical model of the application. Once a logical model is created, the deployment system uses the logical model to automatically deploy various computer/software resources to implement the application. The deployment system converts each of the model components into one or more instances that correspond to physical resources.
1 . An apparatus comprising:
means for forming a scale-independent logical model of an application to be implemented by a distributed computer system, the model having multiple components representing logical functions of the application; and
means for converting individual model components into one or more instances representative of physical resources that are used to implement the logical functions.
2 . The apparatus of claim 1 , wherein each instance represents a corresponding physical resource in a one-to-one relationship.
3 . The apparatus of claim 1 , wherein:
the distributed computer system comprises multiple computing nodes;
the model components comprise a module that is representative of a functional behavior of the application; and
an instance of the module corresponds to a node of the distributed computer system.
4 . The apparatus of claim 1 , further comprising means for allocating the physical resources to implement the instances.
5 . The apparatus of claim 1 , further comprising means for allocating the physical resources in real time to implement the instances.
6 . The apparatus of claim 1 , further comprising means for storing the instances in a database.
7 . The apparatus of claim 6 , further comprising means for querying the database to determine a current configuration of the application.
8 . The apparatus of claim 1 , further comprising computer-readable code embodied on a computer-readable medium, wherein the computer-readable code is configured to cause one or more processors to effectuate the means for forming a scale-independent logical model and the means for converting individual model components.
9 . An apparatus comprising:
means for constructing an application for a distributed computer system according to a logical model, the logical model having multiple components representing logical functions of the application;
means for monitoring operation of the application during runtime; and
means for automatically deploying resources of the distributed computer system to the application as operation conditions change.
10 . The apparatus of claim 9 , wherein the application comprises an Internet service.
11 . The apparatus of claim 9 , wherein the constructing means comprises means for creating one or more instances of each model component, the instances specifying physical resources used to implement the logical functions.
12 . The apparatus of claim 11 , further comprising means for storing the instances in a database.
13 . The apparatus of claim 12 , further comprising means for querying the database to determine a current configuration of the application.
14 . The apparatus of claim 9 , wherein the monitoring means comprises means for receiving events regarding operating conditions of computer nodes in the distributed computer system and evaluating the events against a policy.
15 . The apparatus of claim 9 , wherein the distributed computer system comprises a plurality of interconnected computer nodes and the logical model comprises a module that is representative of a behavior of the application, and the deploying means comprises:
means for creating one or more instances of each module component of the logical model, the instances specifying physical resources used to implement the behavior of the application; and
means for allocating a node of the distributed computer system for each instance of each module.
16 . The apparatus of claim 9 , further comprising means for tracking the resources that are deployed to the application and available resources that have not yet been deployed.
17 . The apparatus of claim 9 , further comprising computer-readable code embodied on a computer-readable medium, wherein the computer-readable code is configured to cause one or more processors to effectuate the constructing means, the monitoring means and the deploying means.
18 . An apparatus comprising:
means for maintaining a logical model of an application for a distributed computer system, the logical model having multiple components representing logical functions of the application;
means for creating one or more instances of each component in the logical model; and
means for allocating resources of the distributed computer system to implement each of the instances.
19 . The apparatus of claim 18 , wherein the creating means comprises means for producing multiple identical instances of a component in the logical model to accommodate operating conditions for the logical function represented by the component.
20 . The apparatus of claim 18 , wherein the distributed computer system comprises a plurality of interconnected computer nodes and the logical model comprises a module that is representative of a behavior of the application, the allocating means comprising means for allocating a node for each instance of each module in the logical model.
21 . The apparatus of claim 18 , further comprising means for recording the instances in a database.
22 . The apparatus of claim 21 , further comprising means for querying the database to determine a current configuration of the application.
23 . The apparatus of claim 18 , further comprising:
means for tracking the resources that are allocated; and
means for correlating the resources with the instances for which the resources are allocated.
24 . The apparatus of claim 18 , further comprising computer-readable code embodied on a computer-readable medium, wherein the computer-readable code is configured to cause one or more processors to effectuate the maintaining means, the creating means and the allocating means.
25 . An apparatus comprising:
means for maintaining a logical model of an Internet service hosted on a plurality of interconnected computer nodes, the logical model having modules
means for creating one or more instances of each module in the logical model;
means for allocating a computer node for each corresponding instance; and
means for configuring each computer node to perform the logical functions represented by the module from which the corresponding instance is created.
26 . The apparatus of claim 25 , wherein the configuring means comprises means for loading software onto the computer node.
27 . The apparatus of claim 25 , wherein the configuring means comprises means for downloading software from a remote location to the computer node via a network.
28 . The apparatus of claim 25 , wherein the configuring means comprises:
means for initializing the computer node by installing a platform software; and
means for loading a software program that performs the logical functions associated with the instance.
29 . The apparatus of claim 25 , further comprising means for tracking the instances that are created in a database.
30 . The apparatus of claim 25 , further comprising:
means for adding a new instance of a particular module;
means for allocating a new computer node for the new instance; and
means for loading software onto the new computer node that performs the logical functions represented by the particular module.
31 . The apparatus of claim 25 , further comprising:
means for removing a particular instance of a particular module;
means for deallocating a computer node associated with the particular instance; and
means for returning the computer node to a pool of available computer nodes.
32 . The apparatus of claim 25 , further comprising computer-readable code embodied on a computer-readable medium, wherein the computer-readable code is configured to cause one or more processors to effectuate the maintaining means, the creating means, the allocating means and the configuring means.
33 . An apparatus comprising configured to deploy an application for a distributed computer system having a plurality of computer nodes, the apparatus comprising:
means for rendering a logical model of the application, the logical model having multiple components representing logical functions of the application; and
core converter means configured to create one or more instances of the model components and allocate computer nodes of the distributed computer system for the instances to implement the logical functions represented by the model components from which the instances are created.
34 . The apparatus of claim 33 , wherein the core converter means comprises:
tracking means including a service running state to track the instances created for the model components; and
resource manager means configured to track the computer nodes available to be allocated.
35 . The apparatus of claim 33 , wherein the core converter means comprises a loader to load software on the computers nodes to implement the logical functions.
36 . The apparatus of claim 33 , wherein the core converter means comprises:
tracking means including a service running state to track the instances created for the model components;
resource manager means configured to track the computer nodes available to be allocated; and
loader means configured to load software onto the new computer node, the software being executable on the computer node to implement the logical functions represented by the particular model component.
37 . The apparatus of claim 33 , further comprising management policy means configured to monitor operation of the application and to specify when new instances of the model components are to be created or removed based on the operation of the application.
38 . The apparatus of claim 37 , wherein the management policy means is configured to listen to events generated by the computer nodes as a way to monitor operation of the application.