Application performance is measured by service time (response time), latency, throughput, efficiency.
Depending on application needs, we describe performance as “how fast “can a given task or work can be completed by the program with the available computing resources.
Scalability means ability of the application to increase throughput or computing power of the program when additional resources (CPU/Disk etc) are given to the program.
Scalability and Application performance are two different things for the majority of the applications and almost all of the time they are at odds to each other and requires some level of tradeoffs. Designing the application for scalability often requires that we distribute the given set of work (tasks) across parallel threads or programs or computing resources so that all the given computing resources can be used by the programs so as to increase throughput.
Good example to understand this concept is deploying the some web application on a single server which hosts its database (Persistence), application server (Business layer), cache server (Service layer/persistence layer) etc. on the single machine. Since all the components of application are hosted on same machine, it’s bound to give very good performance (No network latency involved across any tier). However after a certain point, performance might start to deteriorate after reaching a certain threshold in terms of throughput. Once the threshold throughput is achieved. There is no way to increase the throughput since every tier is on same single server. However if we move the each of the layers on the different machines, then we might increase the throughput of the application, however this might decrease the performance of the application (Network latency involved here). It’s very rare case to see application performance and scalability go hand in hand.
Comments are closed here.