Application Servers and Linux: The Enterprise Awaits - page 2
It's not just for big iron anymore
An application server is classic middleware that works with different data sources to deliver requested data via the Internet or an intranet to users via Web browsers. For instance, a corporate executive may ask the application server for data that exists on two different data sources, an Oracle database and an SQL Server database. When the request is made, an application (usually, but not always, a Java application or applet) runs on the application server. This application requests the data either by summoning a native database driver or a generic (JDBC or ODBC) driver, formatting the resulting data in a way the Web browser can understand (using HTML, Java, or XML), usually by placing the data into a template. The Web browser then receives the data, and all is right with the world.
In real-world terms, application servers are primarily used in the e-commerce world, where there's a need to manage dynamic data drawn from disparate data sources. For example: you've set up an e-commerce application involving a shopping cart to process the order and receive the credit-card data. When the user gets to the point of checking out, you don't want the application server to fail. With a good application server another application server in the cluster is ready to finish the transaction should the main server fail, while making sure that an application server won't be overwhelmed--excess demand will be sent to a less-busy server within the cluster.
This is, naturally, the simplified view, and a lot happens under the hood far beyond the view of the user. The application server must be able to authenticate the user in some fashion. The server must have the processing power to run an applet and deal with the importing of data. And it must work in conjunction with an efficient Web server (such as the Apache Web server) to make sure that data is sent back to the user properly.
And the application server must have the power to handle a large number of requests without crashing, as well as ensuring that a session does not die in the middle and leave the user high and dry. To that end, there are important features that are absolutely essential for the enterprise-level application server: load balancing, fault tolerance and failover.
Load balancing is a simple concept: spread the load among all the servers in a cluster, rather than risking having one or two servers overworked and on the edge of failure. This load balancing is a staple in the overall Web server world, and typically application servers take two different approaches to it: employ a simple round-robin method that sends an incoming request down to a less-busy server, or institute an algorithm-based system, in which usage on the entire network is analyzed and a request is sent to the server that can best handle it based on parameters set up by the system administrator.
Failover, too, is a simple concept: if a user has already launched a request from the application server, the failure of the server shouldn't affect the user. With both server- and session-level failover, if a server becomes unavailable in a cluster, an application can be rerouted to another server in the cluster. The new server then restores information about the session and presents the user with the next page in the application. If all goes well, the user won't know that their (initial) server failed. A good application server, such as BEA WebLogic Server, offers these technologies both for Web pages and EJB components.