Architecting for Speed
I'm going to give you an engine low to the ground.
An extra-big oil pan that'll cut the wind underneath you.
That'll give you more horsepower.
I'll give you a fuel line that'll hold an extra gallon of gas.
I'll shave half an inch off you and shape you like a bullet.
When I get you primed, painted and weighed...
...you're going to be ready to go out on that racetrack.
You're going to be perfect. (From the movie: Days of Thunder)
In the monologue above, Harry Hogge, crew chief, is talking to the framework of a car; explaining how it is that he's going to architect her for speed. What I love about this monologue is that Harry isn't focusing on any one aspect of the car, he's looking at the big picture - inside and out. This is the way we should architect web application infrastructures for speed: holistically and completely, taking the entire application delivery infrastructure into consideration, because each component in that infrastructure can have an effect - positive or negative - on the performance of web applications.
Analyst firm Forrester recently hosted a teleconference (download available soon) on this very subject entitled "Web Performance Architecture Best Practices." In one single slide analysts Mike Gualtieri and James Staten captured the essence of Harry's monologue by promoting a holistic view of web application performance that includes the inside and outside of an application.
"Performance depends upon a holistic view of your architecture"
SOURCE: "Teleconference: Web Performance Architecture Best Practices", Forrester Research, July 2008.
The discussion goes on to describe how to ensure speedy delivery of applications, and includes the conclusion that cutting Web-tier response time by half delivers an overall 40% improvement in the performance of applications.
Cutting response time is the primary focus of web application acceleration solutions. Combining intelligent caching and compression with technologies that make the browser more efficient improve the overall responsiveness of the web tier of your web applications. And what's best is that you don't have to do anything to the web applications to get that improvement. While improving performance in the application and data tiers of an application architecture can require changes to the application including a lot of coding, the edge and application infrastructure can often provide a significant boost in performance simply by transparently adding the ability to optimize web application protocols as well as their underlying transport protocols (TCP, HTTP).
Steve Souders, author of "High Performance Web Sites" (O'Reilly Media, Inc., 2007) further encourages an architecture that includes compressing everything as well as maximizing the use of the browser's cache.
But my absolute favorite line from the teleconference?
"Modern load balancers do far more than just spread the load."
Amen, brothers! Can I get a hallelujah?
If you weren't able to attend, I highly recommend downloading the teleconference when it's available and giving it a listen. It includes a great case study, as well, on how to build a high performing, scalable web application that helps wrap some reality around the concepts discussed.
Perhaps one day we'll be talking to our applications like Harry Hogge does to the car he's about to build...
I'm going to give you code with tightly written loops.An extra-fast infrastructure that'll offload functionality for you.
That'll give you more horsepower.
I'll give you a network that'll hold an extra megabit of bandwidth.
I'll compress and shape your data like a bullet.
When I get you optimized, secured and deployed...
...you're going to be ready to go out on the Internet.
You're going to be perfect.