« PreviousContinue »
One click deployment application to an existing environment
Receive request to deploy an application
User select s environment to deploy to
Retrieve environment configuration
parameters from repository
Re-install application to environment
ONE CLICK DEPLOYMENT
This application is related to U.S. patent application Ser. 5 No. 09/240,229, filed Jan. 29, 1999 entitled "Database Appliance Comprising Hardware And Software Bundle Configured For Specific Database Applications," now U.S. Pat. No. 6,487,547, filed by Lawrence Ellison, et. al., (herein referred to as "Ellison"), hereby incorporated by reference in 10 its entirety.
This application is related to U.S. patent application Ser. No. 09/872,235, entitled "Techniques For Automatically Provisioning A Database Over A Wide Area Network", filed on May 31, 2001 by Jean-Louis Baffler, et al., (herein 15 referred to "Baffler"), hereby incorporated by reference in its entirety.
FIELD OF THE INVENTION
The present invention relates to installing software, and in particular, installing software hosted by application service providers.
BACKGROUND OF THE INVENTION 25
Many enterprises expect to use the Internet to reach far-flung agents and customers. The Internet is a public network of computer networks each with multiple nodes. The Internet uses open, standard protocols for addressing 30 nodes and passing information from one node to another. A user accesses the Internet by logging onto one of the computers on the network, often owned and operated by an Internet Service Provider (ISP). Typically, a user establishes a severable link between the user's own computer and the 35 ISP computer. A client application program (a client) running on the user's computer interacts with a server application program (a server) running on one of the nodes on the Internet.
The World Wide Web (the Web) is a collection of 40 resources available over the Internet that are provided by various servers and that can be accessed by a particular client called a Web browser using a hyper-text transfer protocol (HTTP). Using a Web browser, a user can select a resource on the Web, identified by its Universal Resource 45 Locator (URL) name, and have that resource presented to the user. The resource usually includes textual information and often includes graphical, video and audio elements.
For electronic commerce using the Web, the resource provided by the server must include a mechanism for 50 accepting user information. For example, many Web resources include forms for accepting product orders. Effective transactions may also require the resource provide access to a database. For example, a database enables the server to track inventory of products available for purchase, 55 or to find the account information requested by the client.
Any team that develops a Web site faces the challenge of having to deal with developing multiple components. The term component is used herein to refer to software (code or data) configured for a particular set of end users. A compo- 60 nent may be a database base object or a software module that performs functions such as generating screen displays, receiving user input, and carrying out data processing operations that integrate and select data, and present the data to a user or to other processes which, in turn, present the data to 65 the user. A set of integrated components that provide a particular functionality is referred to as an application. For
example, a set of components that implement an accounting system is referred to as an accounting application.
Applications reside and run on an application infrastructure. The term application infrastructure refers to computer resources that may be shared by multiple users, including hardware, operating system, disk storage, and a database server, a web server, and an application server.
A particular configuration of an application infrastructure provided to an application is called an environment. For example, an environment may be a particular configuration that includes access to a particular directory or set of UNIX operating system functions, to a quantity of disk storage, to a database server under a user account, to a fixed number of database sessions, and to a tablespace (e.g. a set of data files used to hold data) dedicated to the application by a database server.
Developing and maintaining an application for an enterprise is an enormously complex undertaking requiring expert personnel. While a large enterprise has the finances to assemble a team having the requisite expertise, most enterprises are too small to assemble and support such a team. Small to medium sized enterprises need a way to generate an effective presence on the Internet, complete with an application, without incurring the full cost of a team of programmers and experts.
To offset these costs, enterprises employ service companies to maintain the applications and environments in which the applications run. The technique of using service companies to maintain and operate applications is referred to as application hosting. A hosting environment may be accessed via, for example, the Internet, or an extended intranet. Application hosting can reduce the cost of managing applications because it allows companies to share the resources needed to run an application, resources that not only include an application and its environment, but the experts needed to maintain the application and its environments, including computer administrative support personnel.
The term "user" is used herein to refer to a particular entity for whom an application and its associated data is being hosted. The entity may be a human individual or an enterprise.
Application hosting reduces costs by enabling an enterprise to combine resources with other enterprises to manage the complex process of maintaining applications and their environments. Another way to reduce costs is to reduce the complexity of this process. Various complex tasks included in this process are the creation and configuring of an environment needed to develop and run an application, and the installation of various application components into these environments. These tasks are collectively referred to as deploying software.
Producing software requires maintaining multiple environments to run various copies and versions of an application. These multiple environments include a development environment, a testing environment, a staging environment, and a production environment. The development environment is used to develop software. Access to the environment is limited to developers. The testing environment is used to test software. Access to the environment is limited to testers. The production environment is an environment where an application is used by an end user. The staging environment simulates a particular production environment, and is thus configured similarly to a particular production environment, and is used to test how well an application will run in the production environment.
Deploying an application is a laborious and complex process. Those that perform the task have to deal with a large
range of technology. The process entails, for example, analyzing an application to determine a suitable environment for it, identifying the application's various components, installing and configuring hardware and operating systems for a new environment, configuring an existing environment, running installation routines to install application components, and configuring network and security mechanisms.
Based on the foregoing, it is clearly desirable to provide a system that reduces the complex task of deploying software.
SUMMARY OF THE INVENTION
Techniques are provided for deploying applications hosted by an application service provider. According to an aspect of the present invention, an application in a first environment is automatically deployed to a second environment in response to receiving a request over a network from the party for whom the second environment is being hosted. The first environment may be an environment where applications are developed by the party over the network. Deployment of the application may entail provisioning of an environment for the application.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 is a block diagram that depicts a development service provider system used by development service providers to host development environments for applications according to an embodiment of the present invention;
FIG. 2 is a block diagram that depicts a repository used by a development service provider system to track various elements hosted by the development service provider system according to an embodiment of the present invention;
FIG. 3 is a flowchart that depicts a process for deploying an application according to an embodiment of the present invention;
FIG. 4 is a flowchart that depicts a process for deploying an application according to an embodiment of the present invention; and
FIG. 5 is a flowchart that depicts a computer system that may be used in an embodiment of the present invention.
DETAILED DESCRIPTION OF THE
A method and apparatus for deploying an application are described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Described herein is a process for deploying an application into a hosted environment. The process of collecting information about the deployment may be initiated through user interfaces transmitted to a user over the Internet. After the requisite information has been collected, the actual deployment operation is initiated by clicking a command button in the user interface. The deployment is then completed with
out human intervention. Because deployment may be completed in this manner, the deployment process is referred to as "one-click deployment".
One-click deployment automates the onerous task of
5 deploying software, thereby reducing the cost of maintaining and developing applications. A one-click deployment process is illustrated herein by using the process to deploy an application from the hosted development environment where the application is developed, to other environments,
10 such as the testing, staging, and production environments. The development of an application is an iterative process involving repeated deployments between environments. For example, when developing an application, it may be developed, deployed to a testing environment, tested, and then
15 further developed and redeployed to a testing environment. Automating the deployment process significantly reduces the time and cost incurred to develop an application.
The capability to cheaply and quickly deploy an application from a hosted development environment to another
20 hosted environment creates significant advantages for vendors of packaged applications, especially relatively small vendors. A vendor may develop an application on a hosted environment, where it can be readily deployed to customers. The vendor can realize the benefits of such a deployment
25 system while being insulated from the burdens of managing or undertaking deployment of the application.
Development Service Provider System
30 FIG. 1 shows development service provider system 180 and some of its constituent parts, according to an embodiment of the present invention. A development service provider system hosts environments and applications for users, and provides tools that may used by the users to request
35 environments and develop the applications. Development service provider system 180 includes appliances 120, development environment 130, and configuration manager 190. Appliances 120 and development environment 130 are coupled to development service provider system 180 via a
40 network (not shown), such as a local area network or a virtual private network.
Appliances 120 include appliances 120-1 through 120-N. Appliances 120 are devices that are (1) configured to participate with configuration manager 190 to integrate them
45 selves into development service provider system 180, and (2) to participate with configuration manager 190 to provision environments. An example of an appliance is a database appliance described in Ellison.
The term provisioning refers to operations carried out to
50 enable a set of resources to be used in a particular way by an entity. For example, provisioning a database server entails operations that allow a user to access the database server, operations such as establishing an account, or, if needed, installing the database server. Provisioning a digital
55 subscriber line for a home may entail establishing an account on a remote server connected to the home's phone wiring, and if needed, adding a network card to the home computer and as well as other hardware.
Provisioning the resources for an environment is referred
60 to as provisioning the environment. Thus, provisioning an environment may entail configuring resources such as a web server and database server, and consumable resources, such as storage space, central processing unit (CPU) usage, and connection bandwidth.
65 Depending on the resources hosted for a user on an appliance, an appliance may be either a dedicated device or a shared appliance shared by a plurality of users. If the