In the previous post we identified the Wide Area Network and the impairments that it introduces as a key reason for why a local user (let’s say in NYC) experiences a faster application than a user that is remote to his datacenter (let’s say in Tokyo). I also presented a question to the group: “We identified network latency as one of the key reasons that impact application performance to a remote datacenter; we also said that a typical WAN link will introduce 10 – 500 msec of latency. The question is, why does network latency impact application performance, surely a user doesn’t notice an increase of a few milliseconds in response time, even 500 milliseconds = ½ second goes by in a flinch. So why does network latency have such a big impact on application performance when the data center is remote?”
The following posts will answer this question and more, but in order to get answers we need to first address additional questions:
Consider the remote user in Tokyo, he is accessing multiple applications that are all hosted in the remote NYC data center.
Will all these applications perform the same way once hosted in a remote data center?
The obvious answer is NO, some applications will perform well even when users are remote to the data center, while others will provide intermittent poor performance and some will always perform poorly for a remote user.
The answers to the next questions are less obvious:
- Why do some applications perform well in remote data centers while others fail miserably?
- What is it about the way applications are designed and architected in a remote data center that allows some applications to perform better than others?
- What are the key design flaws that cause applications to perform poorly in a remote data center?
Since there are a lot of different applications, there are also a lot of different answers to these questions. In the next couple of posts we will focus on enterprise-data-driven- transactional applications and their performance flaws over the network (ignoring for a moment back-end or desktop related bottlenecks). We will further limit this category to client server based applications, ignoring for a moment the complexity of N-Tier applications and multi web service based applications, these will be dealt with in future posts.
Over the years I was asked to analyze performance problems for many transactional applications and specifically analyze their performance degradation when users are remote to their data center, the following are the key application metrics that I found are related to performance degradation over the network:
- The number of application turns per transaction (or how chatty the application is)
- The transaction size (or how much data needs to be downloaded from the server to the client in order to complete each transaction)
- The transaction efficiency factor (how much data a transaction downloads per application turn)
- The blocking nature of object retrieval (can the transaction retrieve multiple objects concurrently or is each object download blocking other object requests from being processed)
- The transaction redundancy metric (or how much of the same data is being retrieved by all the requests made by this transaction). It seems like this metric should always be zero, but you will be surprised how often this is the single reason behind performance problems.
- The transaction initialization size (how much data does the transaction download initially Vs. sequential navigational steps)
- The caching ratio (how much data is cached locally as a percentage of the overall data needed by the application)
- The latency scale factor (How does the backend’s ability to scale change when network latency is added between front end clients and the backend)
Measuring and observing these metrics allows for the deep level analysis that is required to identify performance bottlenecks. This information also helps to point out to application developers and system engineers what needs to be changed in order to remediate application performance problems.
In the next couple of posts I will explain each of the above factors and describe how each of them impacts application performance, so sign up for the RSS feed to get notification on these future posts.
Until then…
Amichai Lesser


December 2nd, 2009 at 10:28 pm
I can not believe the amount of quality material that exists on this site. The site is extremely eye catching and pulls the reader straight in, the articles are great quality and are very professionally written. I have seen too many of these sites where it looks like they pay an 8 year old to do the writing – Not this one. Your site is easily the best that I have seen in a long while.