SYSTEM FOR HOSTING SOFTWARE APPLICATIONS ON DISTRIBUTED SERVERS, APPARATUS AND METHOD
THEREOF
BACKGROUND OF THE INVENTION
1. Field of the invention The present invention relates to a system for hosting software applications on distributed systems, and more particularly, to at least one apparatus within this system and methods of operating such apparatus.
2. Description of the Related Art The internet hosting industry is rapidly developing into one of the most critical segments of the internet infrastructure services market, and represents an attractive investment opportunity today. Hosting companies, or data centers, provide the underlying infrastructure needed to maintain and operate Web-site, application, and storage services. These companies establish secure facilities where the network interface, server, database, and other equipment needed to support the services, are kept. They also provide IT services using network, server and database engineers, as well as firewall and security services.
As each data center is built to provide a certain service level, most data centers offer standard packages so that they may enjoy economies of scale, and do not allow customizations. This is a problem, in that a customer who desires more than a standard level of service may be forced to engage high-cost, premium hosting facilities for all its software applications and users, unless the customer is willing to liaise via switches with multiple data centers and endure the problem of service disruptions that often occur in switching data centers.
Another problem is that, although leading data centers are building more hosting facilities, the footprint of each individual data center is expected to remain limited due to a multitude of factors. Besides capital considerations, those factors include the limited availability of suitable locations, difficulty with local regulations
and business relationships, and the existence of entrenches competitors/partners. Consequently, a service operator that maintains a data center may require its users to pay for expensive long-distance lease lines, or rely on internet connections that are likely to go over often-congested public peering points.
One way to speed up response time is to satisfy user requests from servers situated near them. U.S. Patents 5,991,773 and 6,243,760 describe mechanisms to implement distributed caches, while U.S. Patents 5,920,725, 6,003,087 and 6,185,608 further provide methods to dynamically cache contents. Such services are already being offered by content delivery providers like Akamai, Digital Island and Exodus. However, these prior art systems and products support only content. The software applications that generate the content are still centralized, and transactions (e.g. purchases) still have to be performed at a central site. This leads to long network latencies, high connection costs, and user dissatisfaction.
The alternative to performing transactions centrally is to adopt a distributed architecture. Distributed systems and databases have been investigated extensively. For example, load scheduling, where the total mix of processes in a distributed system is known in advance, online scheduling, for systems where information on the workload is not available in advance, and data consistency issues have been addressed. However, these studies do not address the problem of deploying applications on distributed servers with matching service levels, nor do they account for communication latencies between users and distributed servers, and among the distributed servers, over networks such as the Internet where turnaround time could vary widely.
U.S. Patent 6,115,710 proposed a system for distributing an application to distributed servers that may be of heterogeneous configuration, by automatically packaging the source code of the application and sending it for compilation and linking at each distributed server. This patent, however, did not cover the issue of matching the service level of distributed servers and applications. It also did not
allow an application to span multiple servers, for example, a web server, application server and data server, and to involve network configurations.
SUMMARY OF THE INVENTION To solve the above problems, it is an objective of the present invention to provide a method of operating a central controller in a distributed server system having one or more hosting sites and at least one access point, comprising the steps of: (a) maintaining a plurality of software applications; (b) receiving a request for at least one of said plurality of software applications from said at least one access point; (c) registering said at least one access point that desires to use said sat least one of the plurality of software applications; (d) deploying said at least one of the plurality of software applications to one or more hosting sites; and (e) sending a list of hosting sites and authentication information to said at least one access point.
It is another object of the present invention to provide a system for hosting on distributed servers software applications that may be accessed selectively by users at remote access points, based on a coordinated distribution and authorization protocol managed by a central controller.
A further object is to provide a method of operating an access point in a distributed server system having one or more hosting sites and a central controller, comprising the steps of: (a) requesting a software application from the central controller, (b) registering with the central controller, (c) receiving authentication information and a list of hosting sites having the requested software application, and (d) accessing the software application from one of the listed hosting sites.
Yet another object is to provide a method of operating a hosting site in a distributed server system having at least one access point and a central controller, comprising the steps of: (a) sending a communication to the central controller including information related to the hosting site; (b) receiving a software application form the central controller; (c) receiving a request from said at least one access point for access to the received software application; and (d) running the software application for said at least one access point.
It is another object of the present invention to provide a hosting site for hosting software applications that may be accessed by one or more remote points in a system that has a plurality of distributed servers, according to the method above.
Finally, it is an object to provide a system for hosting software applications on distributed servers, comprising: (a) a central controller operating to maintain software applications, register one or more access points, deploy software applications to one or more hosting sites, and communicate to each of one or more access points a list of hosting sites for accessing each software application, (b) said one or more access points for accessing an application from at least one of the listed hosting sites, and (c) said at least one hosting site for determining whether said one or more access points has permission to access the requested application, and running the application for said one or more access points.
BRIEF DESCRIPTION OF THE DRAWINGS
The above objective(s) and advantages of the present invention will become more apparent by describing in detail a preferred embodiment thereof with reference to the attached drawings in which:
FIG. 1 shows a simplified representation of an architecture of a distributed server system, or virtual data center, having a central controller, a hosting site, and an access point, according to the present invention;
FIG. 2 depicts a simplified representation of a hosting site interacting with an access point according to the present invention;
FIG. 3 is a view of a distributed server system including a central controller, one or more access points, and multiple hosting sites, which are connected to one another via the Internet, according to the present invention;
FIG. 4(a) is a flowchart showing a method of operating a central controller for receiving a request for a software application from an access point according to the present invention; FIG. 4(b) is a flowchart showing a method of operating a central controller for deploying a software application to a hosting site accordingly to the present invention; FIG. 5 is a flowchart showing a method of operating an access point for requesting and accessing a software application according to the present invention;
FIG. 6 is a flowchart showing a method of operating a hosting site for receiving and running a software application according to the present invention;
FIG. 7(a) is a block diagram of a central controller according to the present invention; FIG. 7(b) is a block diagram of a hosting site according to the present invention; and
FIG. 7(c) is a block diagram of an access point according to the present invention.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows in simplified schematic form the architecture of a distributed server system 1, or virtual data center, having a central controller 2, a hosting site 4, and access point 3, according to the present invention. In a practical system, there would be a plurality of hosting points and a plurality of access points, all communicating with a central controller.
With reference to FIG. 1, and according to a first embodiment of the present invention, the central controller 2 stores, lists and maintains a group of software applications that are actually hosted or hostable in the system 1. A required service level, deployment configuration, and hardware information can be associated with each of the software applications as stored in the central controller 2. A hosting site 4 within the system 1 is operative to communicate to the central controller 2 several items of information in a transmission (b), including its location, supported service level and hardware information. While one hosting site 4 is shown in the exemplary illustration of the system 1, a plurality of hosting sites may appear in the system and serve as a basis for hosting a plurality of software applications in an efficient and effective manner for access by a large number of remotely dispersed users. Such users would be located at separate remote sites, such as the single access point 3 illustrated for exemplary purposes in Fig. 1, and would be operative to communicate to the central controller 2 a transmission (c), including for example, its location and the applications that is needs.
Based on these inputs, the central controller 2 provides a transmission (d) assigning each application to one or more hosting sites (only one is illustrated in the exemplary system but more typically would be use). The application can be deployed to one or more of the available hosting sites 4 according to a desired system configuration and the appropriate hardware configuration at each site. In practice, the central controller 2 will determine whether the data embodying the application may be replicated on multiple hosting sites 4, maintained at one hosting site 4, or held at the central controller 2.
The central controller 2 communicates to each access point 3 a transmission
(e) containing an ordered list of hosting sites 4 that support some or all of the applications that are hosted within the system 1. Using the ordered list received from the central controller 2, an access point 3 may issue a transmission (f) requesting access to an application that currently is being hosted by the system 1 or is hostable by one or more of the hosting sites 4. When authorized to do so, according to one or more techniques that are subsequently identified, an authorized hosting site 4 will run the application for the access point and provide the results to the access point in a transmission (g). The hosting site 4 may also provide the results to the central controller (not shown). Also, during the process of running the application, the hosting site 4 can interactively accept inputs from the access point 3 via a console. In addition, any data requests generated by the application being run at one hosting site 4, can be satisfied through coordinated actions with other of a multiple of hosting sites, by the single hosting site acting alone, or by a communication with the central controller 2, depending on how the data is stored and the application executed.
FIG. 2 shows generally how an application is deployed at a hosting site 4. In FIG. 2, a hosting site 4A receives a request from an access point 3 for access to a particular application. According to this exemplary embodiment of the invention, all requests from access points first arrive at a firewall (not shown), and are directed to a web server process 11 A over a router/switch (not shown). In fulfilling the request, the web server process may issue requests to an application server process 12A over a router/switch (not shown), which in turn may generate data requests that arrive at a distributed data service (14A) over a router/switch (not shown). In FIG. 2, the
distributed data service 13 A coordinates with another hosting site B to satisfy the request, either from a local data server process (14B) or a remote data server process
(not shown), while maintaining data consistency. Each router/switch can optionally implement firewall and virtual private network functions.
Where a hosting site serves multiple applications, its web service components may be provided by a shared web server process, or dedicated web server processes, depending on the applications' configuration requirements. Likewise, the routers/switches, application server processes and data server processes may be shared or dedicated. Furthermore, the server hardware that run the server processes may be shared or dedicated. In an exemplary embodiment, there is a distributed data service for each database.
Referring to FIG. 3, a central controller 2, multiple hosting sites 4, and one or more access points 3 are connected to each other via the Internet to form the network 10. The manner in which the central controller 2, multiple hosting sites 4, and one or more access points 3 are connected, is not limited to the Internet. These devices may be connected in any presently known network, such as an intranet, as well as any future developed networks. The method of operation and communication between the central controller 2, multiple hosting sites 4, and one or more access points 3 in FIG. 3 are essentially the same as that which is described in FIG. 1. However, a more detailed description of the method of operation of each of the devices in the present invention will be described below.
FIG. 4(a) is a flowchart showing a method of operating a central controller in connection with receiving a request for a software application from an access point.
According to another exemplary feature of the present invention, a central controller 2 stores, lists, maintains and optionally supports a plurality of software applications. As indicated above, a required service level, deployment configuration and hardware information may be associated with the software applications. The central controller 2 then receives a request for one of the software applications from an access point 3 (SI 00). In reply, the central controller 2 will register the access
point 3 that desires to use the software application (SI 10). The central controller
2 will evaluate the eligibility of the access point to receive the requested application
(or any application for that matter) based upon a variety of criteria related to system requirements (technical), financial relationships (billing) and authorization (security). If eligible, the central controller 2 then sends authentication information and a list of hosting sites 4 to the requesting access point 3 (S120). The authentication information can be used for security purposes to later verify that the access point has permission from the central controller to access a particular application.
The central controller 2 can maintain the list of available hosting sites 4 and their capabilities within an accessible database. That is, a record can be kept of each hosting site, its currently resident software applications, along with any other relevant information related to the respective hosting site in the database, such as capacity, current availability, processing speed and the like. The relevant information may include location information, supported service levels, and hardware specifications of each of the hosting sites 4.
FIG. 4(b) is a flowchart showing a method of operating a central controller 2 in connection with the deployment of a software application to a hosting site 4 according to the present invention.
As mentioned above, the central controller 2 maintains a plurality of software applications (SI 50). The central controller 2 can either store the software applications in its own memory or control a separate device that stores the software applications. Software updates and maintenance are controlled by the central controller 2, and any changes or upgrades to the software applications can be communicated from the central controller 2 to a hosting site 4 that has a software application. The records maintained by the central controller of each hosting site would be used for this purpose.
The central controller 2 determines whether a hosting site 4 is configured to receive a particular application (SI 60). The central controller 2 can make this determination based on an automatic operation of the central controller 2, a manual
input, or a request from a hosting site 4 for a particular application. If the central controller 2 determines that the hosting site 4 is not configured to currently receive the particular application, the central controller 2 sends a message, for example one indicating "Improper Configuration", to the hosting site 4 (SI 80). If the central controller 2 determines that the hosting site 4 is configured to receive the particular application, the central controller 2 deploys the software application along with authentication information to the hosting site (SI 70). Similar to the authentication information discussed above that is sent to the access points in step S120, the authentication information sent to the hosting site 4 is also used to verify that an access point has authorization from the central controller 2 to access a particular software application.
FIG. 5 is a flowchart showing a method of operating an access point 3 for purposes of requesting and accessing a software application according to the present invention.
An access point 3 requests a software application from the central controller 2 (S300). With the central controller's permission, the access point 3 performs a registration operation with the central controller 2 (S310). While registering, the access point 3 may send its location, capability and other (e.g., security level) information to the central controller 2. The access point then receives from the central controller 2 a list of hosting sites 4 having the requested software application (S320). Notably, such list may be further limited by the security or capability of available links between the hosting site and the access point, or similar considerations. Along with the list of hosting sites, the access point 3 also receives authentication information. Using the list of authorized hosting sites, the access point 3 accesses the requested software application from one of the listed hosting sites (S330). In the event that the access point 3 fails in its effort to access the software application from the hosting site 4 from which it first seeks to access the software application, (based upon failed links, failed hosting site, security or the like) the access point 3 can be configured to go to a second hosting site 4 to access the software application. Alternatively, the first hosting site 4 can transfer the initial request of the access point to a second listed hosting site 4. This may be done in a manner illustrated in Fig. 2, so
that the requesting access point 3 can access the software application from the second hosting site 4 through the first hosting site in a relay fashion, or by having the second site accept a forwarding of the request from the first site and respond to the access point directly.
FIG. 6 is a flowchart showing a method of operating a hosting site for receiving and running a software application according to the present invention.
A hosting site 4 sends a communication to a central controller 2 that includes information about the hosting site 4 (S400). This information can include, by example and without limitation, location information, a supported service level, and/or a hardware specification of the hosting site 4. The hosting site 4 then receives one or more software applications and authentication information from the central controller (S410). The hosting site 4 receives one or more software applications based on its configuration and available hardware. The authentication information is for determining whether an access point 3 has permission to access particular software applications.
Next, the hosting site 4 receives a request for a particular software application from an access point 3 (S420). The hosting site 4 determines whether it has the requested software application (S430). If the hosting site 4 does not have the requested software application, a message indicating "NO APPLICATION" is sent
(S460). As an alternative, the hosting site can request access to the application from the central controller 2, await receipt of the application and then satisfy the request. A further alternative is for the central controller, upon receiving the request and knowing that the hosting site does not have the application but is the most appropriate site to satisfy the access point request (because of limited capacity network link connections), may automatically send the application to the selected hosting site. If the hosting site 4 determines that it does have the requested software application, the hosting site then determines whether the requesting access point 3 has authorization to access the requested software application (S440). The hosting site performs this determination using the authentication information it received from the central controller 2 in step S410. If the hosting site determines that the requesting access
point 3 does not have authorization to access the requested software application, a message indicating "NO AUTHORIZATION" is sent to the access point (S470). If the hosting site determines that the requesting access point 3 has authorization to access the requested software application, then the hosting site 4 serves, or runs, the software application for the requesting access point (S450).
At this point, the host site 4 may accept console inputs from the access point 3, and output data and screen images to the access point 3. In addition, the hosting site 4 may output data to the central controller 2. For example, if the present invention is implemented in a system in which a user (at an access point) is charged for using a particular application (served from a hosting site), and the billing information is recorded at a central location, i.e., a central controller 2, the hosting site may output information related to the user's charges to the central location.
FIG. 7(a) is a block diagram of a central controller 2 according to the present invention.
The central controller 2 includes an input/output (I/O) unit 106 for transmitting and receiving data; a central processing unit (CPU) 105 for registering access points that request to be registered, generating commands to send software applications to hosting sites 4, and generating commands to send a list of hosting sites 4 having each application to a requesting access point 3; and a memory for storing software applications (SA), a list of hosting sites (HS) having each application, and authentication information (Al). The memory of the central controller 2 can store the information indicated above in a database. The database may also contain location information, supported service levels, and hardware configurations of the hosting sites 4. Finally, the memory of the central controller 2 also stores data and applications (OPER) that are necessary for the general operation of the central controller 2.
FIG. 7(b) is a block diagram of a hosting site according to the present invention.
A hosting site 4 includes an input/output (I/O) unit 406 for transmitting a communication, receiving software applications sent from a central controller 2, and receiving requests to access one of the software applications; a central processing unit (CPU) 405 for generating a communication to send to the central controller 2, processing requests from the access point 3 to access at least one of the software applications, and running the software applications for the access point; and a memory 401 for storing software applications (SA') received from the central controller 2. The communication can include information such as location information, a supported service level, and a hardware specification of the hosting site 4. The memory 401 of the hosting site 4 also stores authentication information (Al1), and data and applications (OPER1) that are necessary for the general operation of the hosting site 4.
FIG. 7(c) is a block diagram of an access point according to the present invention.
An access point 3 comprises an input/output (I/O) unit 306 for transmitting and receiving data; a central processing unit (CPU) 305 for generating a request to register and a request to access a software application; and a memory for storing a list of hosting sites that have certain software applications. The memory 301 of the access point 3 also store authentication information (Al"), and data and applications (OPER") necessary for the general operation of the access point 3.
The access point 3 also comprises a console 307, which includes, for example and without limitation, a monitor, keyboard, and/or a mouse, by which an operator can monitor and interact with the access point.
Although these devices have been described with respect to specific network arrangements, i.e., the Internet, the present invention may be adopted to other networks, including, for example, a wireless network, without departing from the spirit and scope of the present invention.
Although the preferred embodiment of the present invention has been described, it will be understood by those skilled in the art that the present invention should not be limited to the described preferred embodiment, but various changes and modifications can be made within the spirit and scope of the present invention as defined by the appended claims.