What Causes Enterprise Applications to Slow Down - part 2
October 8th, 2008In 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 remote user (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; 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?”
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 NYC data center.
Will all these applications perform the same way across the Wide Area Network?
The obvious answer is NO, some applications will perform well over the WAN, 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 over the network while others fail miserably?
-
What is it about the way the application is designed and architected that allows one application to perform better than others?
-
What are the key design flaws that cause applications to perform poorly over the network?
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 backend 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 the performance problems of many transactional applications and specifically analyze their performance degradation over the network, the following are the key application design attributes that I found lead to performance degradation over the network:
-
The number of (blocking) 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 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)
In the next couple of posts I will explain each of the above factors and describe how each of them impacts enterprise application performance, so sign up for the RSS feed to get notification on these future posts.
Until then…




