Q&A: Application Performance and the Browser Factor
With all the emphasis on cloud computing, applications must overcome browser-related performance issues.
Speed, speed, speed. It's all about speed. Your application has to have it, but in the world of cloud computing, performance (and user satisfaction) can be limited by browsers. In this Q&A with Brian Doll, New Relic's lead application performance engineer, we explore the problems and how developers can mitigate them. At New Relic, Brian helps businesses implement solutions that enable them to better manage and improve Web application performance.
Enterprise Strategies: Why are browsers an issue for application performance?
Brian Doll: Our own research has shown that, with six-second response times, there is much room for improvement in the front-end tier of the application stack. The interesting fact is that many organizations don't realize they have an application performance issue at the front-end tier in the first place. They see that their application is returning requests at sub-second speed and assume that end users are seeing the same rapid performance, when the reality is that an issue at the front end is causing customers to wait six seconds or longer for their commands to be fulfilled. Is that a long time? Yes; studies show that after only one second, end users begin to sense a delay in response time.
How can browsers negatively affect apps?
There are actually a few steps that happen when you command the browser to open an app or Web page, and each has the potential to slow overall app response time. For the sake of brevity, I'll mention three common areas that can affect overall performance:
- Domain Name System (DNS): Bad DNS response times poorly affect a site's performance.
- Document Object Model (DOM) Processing: Large HTML takes a long time to transfer over the network and can also take a long time for a browser to process. Of course, the more DOM nodes you have, the longer your browser will take to process the page.
- Asset loading and rendering: After DOM, there is the issue of actually rendering assets to complete a page load. Every step leading up to this can happen very quickly, but the whole page slows to a crawl loading and rendering CSS files, images, and JavaScript files.
How can a developer differentiate or identify a problem caused by a browser?
Assuming that an organization deploying business-critical Web apps has implemented application monitoring, the best practice is to complement that with real user monitoring. Real user monitoring gives you real-time visibility into the critical steps of the transaction path as a user request travels through the whole application stack -- browser, server, third-party site, database, etc. Done well, real user monitoring lets you see things such as DOM processing time, time in network verse browser root app itself, page rendering, sorting of metrics geographically, and correlation of end-user metrics with server-side app monitoring data.
What are some ways to mitigate these problems?
Let's look at each of the issues I mentioned.
DNS: The key to ensuring good DNS providers is testing. Open-source DNS benchmarking utilities such as NameBench for example can help spot DNS performance issues. And with so many DNS providers currently available, there's no excuse for using a slow one.
DOM processing--Developing pages with fewer DOM nodes will lead to faster processing. This can be easier said than done. If you include extra markup tags in order to customize elements, consider tools such as CSS Lint to get tips on creating better CSS and styling elements without adding too much specificity. Lean DOMs are fast DOMs!
Asset loading and rendering: As the cloud emerged from its primordial state to evolve into what it is today, so, too, have evolved and emerged CDN providers who will lift the burden of storing and loading assets from your repository. These providers can help you optimize page load times, or you could try to optimize them yourself. The bottom line is that slow DOM processing can wreck your reputation online.
What are some tools or technologies that developers can put in place to help mitigate these issues?
Tools that developers can use are user experience monitoring and app-centric monitoring. If you can combine these disciplines and make them work seamlessly together, you end up with continuous, 24x7 monitoring of application health and REAL user activity. With this data, you can manage your service-level agreements (SLAs), proactively monitor performance, and take preemptive action before customers call.
Is there such thing as a browser-proof application?
Ha ha! Maybe we need application-proof browsers! I'm afraid they haven't invented either one yet. That's why testing, benchmarking, and measuring in production are essential capabilities for being successful with your cloud deployment.
What products or services does New Relic offer?
New Relic, Inc. is an all-in-one Web application performance management provider for the cloud and the data center. Its SaaS solution combines real user monitoring, application monitoring, and availability monitoring in a single solution and helps application teams efficiently manage Web application performance in real time. More than 10,000 organizations use New Relic to optimize over 6 billion transactions in production each day. New Relic also partners with leading cloud management, platform, and hosting vendors to provide their customers with instant visibility into the performance of deployed applications. New Relic is a private company headquartered in San Francisco, Ca.