To deploy web applications and manage their performance requires new tools and new approaches. Because of the complexity of web applications and infrastructure, performance has to be "baked in" before being launched into production. But complexity diminishes a developer's ability to fully test and characterize the performance of new applications running on production infrastructures. The result is that nearly half of all application outages are uncovered by end users. With web applications' growing importance to the bottom line, the need to assure web application performance at all levels becomes a critical challenge.
The solution to this problem is to implement an early detection and rapid response process during development that can also be used in production. Actionable information collected using this process can then identify areas for performance optimization, infrastructure tuning, and quick problem resolution.
It's All About the Real User
Web applications are no longer developed one line of HTML at a time. They are typically orchestrated using existing internal or third-party web services with unknown performance characteristics and often invoked across the web cloud. To further complicate the task of managing performance, the dynamic nature of this new generation of web applications results in different users traversing the application infrastructure through divergent paths, making it difficult (if not impossible) to recreate and diagnose performance problems.
However, users of web applications are demanding a richer experience that requires streaming multimedia content and fat client-like capabilities. Web 2.0 applications are no longer a sequence of static HTML pages. They place a heavy dependency on the capability of the end user's computer to constantly re-render the page or host a Flash or Silverlight player, and demand robust last-mile connectivity to handle chatty XML calls.
How can you deliver feature-rich applications with a level of performance that captivates today's hyper-impatient end users? The question is crucial in an environment where a few seconds can mean the difference between satisfied and former users.
Traditional monitoring tools and techniques focus on monitoring the performance of servers. This is because of the strong correlation between server performance and positive end-user experience. But the complexity of web applications has changed all that. A functioning server can no longer ensure that "real" users are experiencing acceptable application performance from across the Web. A hundred different things can (and will) go wrong between the real user's browser and the content or data that the user is accessing. As a result, the key to managing web application performance is to accurately measure performance as experienced by real users at the browser where web applications come together. Real user experience is fundamentally the only true measure of web application performance.
Measuring the real user's experience of web application performance is useful from a reporting perspective; however, the data is not actionable. According to Forrester analyst Jean Pierre Garbani, web application performance has to be monitored and managed at the granularity of each individual transaction, not from a silo (cloud, logical server, code, database, and the like) or infrastructure component (PC, routers, servers, Internet/WAN/LAN, and so on). Poor performing transactions from the real user's perspective should be traced from browser to databaseincluding third-party web service callsto produce a map of the transaction path through the infrastructure as well as the time consumed by each infrastructure tier.
The purpose of mapping the transaction path of real transactions initiated by real users is to facilitate the identification of causes or performance problems or bottlenecks. Each real transaction might follow a different path through a complex (and potentially virtualized) infrastructure, which makes it difficult and time consuming for correlating data stored in configuration management databases to pinpoint problems. With a browser-to-database mapping of transactions from the real user's perspective and the time consumed by each of the infrastructure tiers clearly measured, developers can easily identify the cause of any performance degradation. In most organizations, the process incurred to triage, re-create, and diagnose a problem usually consumes most of the time needed to resolve a problem. With this new approach, the labor cost and time to problem resolution of the real user's performance problem can be greatly reduced.