Other topology variations
Several slight variations on our configuration are possible. Some systems com-
bine all of the view logic onto a single presentation server, including a web
server for static content and a web application server for dynamic content
within the DMZ . This configuration is especially common for applications that
directly access a legacy layer. The advantage is that all web services are encap-
sulated in a single layer. Of course, the downside is that enterprise connections
are exposed in the DMZ , which can make certain hostile attacks easier.
Another variation combines the web application and web servers, with an
array of servers housing the model inside the innermost firewall. With this
configuration, all enterprise connections are made safely inside the corporate
intranet. The command layer controls the round-tripping between the model
and view layers.
You can optimize this configuration so that all web servers, or even web
application servers, share a high-performance, highly available, distributed
directory. This makes it easier to manage and serve static content. A distrib-
uted file system can mirror directories for HTML pages and images, for exam-
ple, to simplify publication of new interface versions. The architecture also
makes it much easier to configure for high availability. Performance through
efficient caching is a significant benefit as well.
Books have been written about the topics covered in this chapter. Our bib-
liography contains excellent sources on deployment strategies.
In the next section, we'll look at performance-related antipatterns. Most
involve high-level process issues, and others are specifically related to Java.
Antipattern: Performance Afterthoughts
I first learned the value of performance analysis as a member of a national sup-
port team for the predecessor to the Intel version of DB2 . Our customers typ-
ically did not use capacity planning, and they rarely designed for performance.
One day, during an application design review for a Fortune 500 company, I
asked about the firm's test plan. My contact replied that testing consisted of an
intern's attempts to break the system. Slightly disturbed by that answer, I then
asked about stress testing. He explained that stress testing involved five people
trying to break the system at the same time. For performance testing, he'd ask
20 people to test the system the morning of production deployment, before
the rest of the users arrived. The system would then be deployed to 300 con-
current users. Needless to say, over the next year I felt like Bill Murray in
Groundhog Day , a movie about the same bad day repeating itself over and over.