IceGrid is a service that expedites the creation of a new class of applications.
Grid computing has become increasingly more important to mainstream information technology endeavors as large SMP servers are replaced by many networked commodity servers. Grids are being used today to solve pressing scientific and corporate challenges. By assembling available resources into an ad-hoc grid, an organization has a powerful computational tool at its disposal.
From an engineering perspective, the challenge is building an application that leverages this new-found wealth of computing power in an efficient, secure and manageable fashion.
A grid application typically must employ a heterogeneous collection of systems and support a variety of platforms, tools and languages. With its extensive portability, efficient protocol and developer-friendly features, Ice is the ideal choice as the communications infrastructure for these types of applications.
What is IceGrid?
Grid applications take many forms. Some, such as the well-known scientific project folding@home, rely on millions of desktop computers to solve a very large problem one small piece at a time. In other cases, the applications run in a managed environment but harness the collective resources of their computer network to achieve organizational objectives more quickly. IceGrid is targeted at the latter types of projects, offering a powerful collection of integrated features that assist not just in the development of new applications, but also in their deployment and ongoing administration. IceGrid has two primary responsibilities:
- facilitate server discovery
- activate servers on demand
As a location service, IceGrid enables clients to discover their servers. By acting as an intermediary, IceGrid decouples clients from their servers and helps to improve the performance and reliability of applications with its support for replication, load balancing and automatic fail over.
For example IceGrid can direct clients to the least-loaded node running server replicas. Once IceGrid facilitates this discovery, further client communication occurs directly with its assigned server. If a node happens to fail or requires other administrative action, the client can be automatically redirected to another server on a different node. All of this activity occurs transparently, requiring no special action by the client at the application level.
Server activation is related to IceGrid's role as a location service. When using IceGrid, a server program is not required to be running at the time a client seeks it out. If a server is not active when a client sends its initial message, IceGrid starts the server automatically on its assigned host.
These two features alone make a compelling case for including IceGrid in your next project, but they only scratch the surface of what IceGrid can do.
Deploying an application consisting of multiple server programs on a large network of hosts can quickly degenerate into a nightmare of tedium fraught with accidental discrepancies between systems. IceGrid relieves much of this pain by allowing you to codify your application's deployment using a repeatable, reliable process. IceGrid will even distribute the programs and files for you and update them on demand.
When describing your deployment, you identify the participating hosts and assign servers to each one. This information is critical to IceGrid's role as a location service because it allows IceGrid to route clients to an appropriate server and start that server if necessary.
If you like, you can prepare a snapshot of the programs and files to be deployed and let IceGrid distribute a copy or subset to each host. IceGrid can also distribute incremental updates if you make any subsequent changes or additions to your master copy, and it guarantees that servers are disabled while the update is in progress. This capability is as useful in a heterogeneous network of systems as it is in a rack of identical blades, and has the potential to save a great deal of time and effort during the initial deployment and over the life of the application.
The IceGrid resource allocation facility coordinates client access to the grid in order to improve response times and make the most effective use of limited grid resources.
IceGrid clients establish a session to allocate resources from the computational services of a grid. IceGrid reserves these resources, in the form of objects and servers, for exclusive use by a client for the duration of its session and automatically reclaims them when the session terminates or expires.
IceGrid's resource allocation facility also supplies the tools you need to secure your grid resources, including tight integration with IceSSL for secure communication and Glacier2 for access control and connection management. These security features guarantee that allocated resources can only be accessed by an authenticated client.
IceGrid's administrative tools give you complete control over your deployed applications. As you can see from the screenshots below, the graphical client provides access to all components of a deployment. Activities such as starting a server or modifying a configuration setting are just mouse clicks away.
More complex tasks are also accomplished easily. For example you can interactively add and remove hosts, migrate a server from one host to another, and initiate the distribution of new server executables and supporting files.
As a Java application, you can run the graphical client on any Java-capable host. The administrative tools can connect securely to an IceGrid deployment from outside a firewall using Glacier, the firewall solution for Ice.