To find a bean-counter-approved solution, we invited BEA Systems, Borland Software, IBM, Microsoft, Novell, Oracle and Sun Microsystems to vie for a coveted spot within our infrastructure. Four products came our way: IBM WebSphere Application Server (WAS) Network Deployment Edition 6.0, Novell Extend 5.2, Microsoft Windows Server 2003 with .Net Framework 1.1, and Sun Microsystems' Java System Application Server 7 (AS7). BEA, Oracle and Borland ultimately declined our invitation. Oracle refused because we wouldn't supply our custom application code to its engineers before testing--standard policy for us--and Borland and BEA gave us no explanation for not participating.
After thorough testing--and retesting again and again--we confirmed what the vendors told us at the outset:
Server-clustering technology often is only a boon if you invest in a second--and a third--server. Although every application server can scale using clustering and load balancing, very few provide the increase in capacity we expected. If one application server can handle 500 messages per second, we hoped a second instance would handle 500 more. Perhaps that's unrealistic due to the resources consumed by the load-balancing daemons, but we anticipated at least some performance increase to justify the full cost of the license for a second instance. Novell's and Microsoft's application servers cleared the hurdle, but both servers ran at 100 percent CPU utilization to do so.
Although we'd prefer external hardware load balancers, our budget didn't permit this option. We simply had to choose from the products we tested. Therefore, we looked beyond performance, and, in fact, weighted that feature at only 10 percent in our report card. We considered features and management capabilities more important. The work involved in managing multiple servers becomes more complex with each additional instance. Managing multiple servers efficiently and selecting the right features are critical from the start. Speed can always be increased later.
We also wanted to make sure the application server could integrate with our infrastructure. A unified messaging infrastructure doesn't do much good if your app server can't communicate with that platform. The investment in an identity-management system is lost if you can't harness its capabilities from your chosen app server.