An Essential Tool for E-Commerce
Written: Sep 14 '00
|
Product Rating:
|
|
|
Pros: Advanced Features, Latest J2EE support, Best of Breed
Cons: Expensive, Difficult to Setup, Resource Hog
|
|
|
| DavidGriffiths's Full Review: Veritas Cluster Server for Solaris BEA WebLogic Ag... |
I've worked for two companies now that have used Weblogic Application Servers as the gateway to the services and data offered. It's becoming the de facto standard amongst Internet startups and E-Commerce ventures.
Application servers are the "middle-tier" in an "n-tier" hierarchy. They commonly sit between the client (person with the web browser) and the server (the database).
The idea of this middle tier is scalability, redundancy, security, and business logic.
Scalability
If you have a large, busy site, your database is probably your most precious resource. Its big, the server is expensive, and it's not that scalable. Big boxes from Sun and IBM can only hold so many CPU's and so many gigabytes of RAM; doubling the number of CPU's or the amount of RAM does not necessarily double the speed of the machine. And this hardware is very expensive.
What most sites typically do is off-load some of the work that the database does onto the middle tier. The middle tier is usually comprised of smaller machines that talk to the database to retrieve data, format it, and then send it to the client. If your middle tier is becoming over burdened, just add another machine. Instant and relatively cheap scalability.
All app servers should do this.
Weblogic has added connection pooling to the mix, however. In most applications, clients receive information that is derived from the database; a database connection must exist or be created. It can be expensive to create those connections (up to 3 seconds for an Oracle database connection).
Weblogic offers the ability to create a pool of connections that are always open. When a client request comes in, the application server grabs a connection from the pool, uses it to fulfill the request, and then returns it to the pool. Should the connection pool become empty, Weblogic opens more. Once the number of incoming client requests drops, it frees those connections. This minimizes the amount of open database connections; connections use database resources and bandwidth.
Redundancy
Because there are multiple application servers running at a given site, a single server failure means that other servers are still there to pick up the load.
Most application servers are isolated from other application servers. Weblogic has taken an interesting approach by implementing "clustering".
Clustering is the ability to maintain a stateful session even if the session is moved between application servers. Basically, if you are shopping on an e-commerce site, and the application server that your browser has been talking to crashes, your browser just starts talking to a different application server. Your session information (what’s in your shopping cart) exists on that other server as well. You continue on, not even aware that there had been a problem.
Clustering is also useful for load balancing. If one Weblogic application server gets busy, it might move your session to another Weblogic application server.
Security
Application servers provide a buffer between the client and the server. The client never talks directly to the database, and Weblogic provides a Secure Socket Layer (SSL) connection for additional data security. Credit card information does not go unencrypted over the Internet!
Business Logic
So Weblogic offers all these features, but how do you put them to use? Code has to be written to interact with the database; what features does Weblogic offer?
This is where things get interesting.
First, I should mention that Weblogic, unlike IBM's WebSphere, is written completely in Java. It comes as no surprise, then, that the business-logic-functionality that Weblogic offers is Java based.
Weblogic supports all the latest J2EE (Java 2 Enterprise Edition) technologies.
As of Weblogic 5.1, support consists of EJB 1.1, Java Server Pages 1.1, Servlets 2.2, JDBC 2.2 and JNDI 1.2.
EJBs are Enterprise Java Beans. They are code units that provide transactional integrity. Write an EJB once and you can use it with almost all application servers (and several databases). An EJB is usually a piece of code that fulfills a client request. Weblogic offers the ability to hot-swap these. Have a new version of an EJB? Just overwrite the old version, and Weblogic will load the new version the next time it needs that bean.
Java Server Pages is a technology that (like Active Server Pages, or ASP) allows HTML to be mixed with Java to generate dynamic HTML. A servlet is a chunk of code that generates dynamic HTML as well, but is more programmatic in nature (and more difficult to develop).
JDBC is Java Database Connectivity. It provides an interface for talking to the database.
JNDI is the Java Naming and Directory Interface. Unlike the other technologies, I do not have much experience with this. It is basically a technology that allows you to find resources over networks.
There are other supported Java technologies (Java Messaging Service and Java Transactional Service) and several non-Java technologies (most notably CORBA).
What’s Good, What’s Bad
Obviously, this is a pretty sophisticated piece of software. It provides a huge number of services, almost all Java based.
One of Weblogic's greatest strengths is its ability to offer all the latest Java Enterprise technology in one package with advanced features like clustering improve scalability and redundancy.
Third party support for Weblogic is very good. Most Java development environments, from the big (Visual Café) to the small (Kawa) offers support for Weblogic, allowing you to build Enterprise Java Beans and deploy them with less human intervention.
All of this comes at a price, and the price is pretty steep. Weblogic charges per CPU (not per server). Using Weblogic can be prohibitively expensive (though not as expensive as scaling the database up).
The sophistication of the tool makes setup and administration daunting for the uninitiated. To get clustering going is even more difficult (I’ve never done it, but I have seen several people work on it; divine intervention from Weblogic themselves was ultimately required). Weblogic does offer consulting and training services, though they are quite expensive.
Performance is not up to par with native applications (remember, Weblogic is written in Java). Sun offers the HotSpot virtual machine that increases Java performance to the point that it is as fast as native code, but Weblogic suggests that HotSpot not be used, and HotSpot is not available for all operating systems. You may end up spending a little more on hardware to get the same speed as something written in C or C++.
Conclusion
The decision to buy an application server (or Weblogic specifically) is a big one, and one that should not be based on an Epinion alone. My goal here was to provide general information and Weblogic-specific information in order to inform and educate. I would recommend going to the Weblogic product pages and browse some of the documentation to get more detailed information.
I consider Weblogic’s Application Server to be the best of breed, but the application server market is heating up, and competition is becoming fierce. Weblogic could be a has-been in a matter of a year (though I highly doubt it).
Recommended:
Yes
|
|
|
|
Epinions.com ID: DavidGriffiths
|
|
Member: David Griffiths
Location: Vancouver, British Columbia
Reviews written: 90
Trusted by: 79 members
About Me: Nothing much.
|
|
|