Website Performance - Why you should care and what you can do!

Why Does Performance Matter?

Oftentimes, people speak interchangeably about web site performance, scalability, and availability. Although these 3 terms are related, they are distinct and unique. Here are their definitions:

  • availability - what is the total length of time that [some part of] a web site is available during a hour/day/year?
  • scalability - what is the largest number of concurrent users that a system can handle?
  • performance - what is the [worst] perceived response time for a single user?

It should be pretty clear that for web sites that charge money (either through ads or via subscription-based services), lesser availability translates into lesser revenue. In the same way that you can lose revenue via an outage, you can lose revenue during traffic peaks if your website cannot handle those peaks.

Hence, just as scalability and availability can reduce your top-line (revenue), can performance have a similar affect?

  • In 2006 Google’s tests showed that increasing load time by 0.5 seconds resulted in a 20% drop in traffic.
  • In 2007 Amazon’s tests showed that for every 100ms increase in load time, sales would decrease 1%.
  • This year (2009) Akamai (a CDN leader) revealed in a study that 2 seconds is the new threshold for eCommerce web page response times.

Hence, it does.

Where Should You Look for Performance Issues?

Ask anyone who has worked on a web site or an enterprise system and they will say “Look at your database!”. Although that is true, the mistake people often make is stopping there. After tuning queries to their satisfaction, engineers seem to ignore 5-7 second website page load times. 80-90% of this time really comes from assembling the web page.

Front-end Engineering Best Practices

About 2 years ago, while analyzing website performance numbers, I noticed that 99% of Tomcat server response times were under 1 second. However, web pages would sometimes take 3 seconds to display. Where was this extra time spent? Luckily, I happened to attend a talk by Steve Souders a few weeks later -  he filled in the gaps. Here is a link to his front-end engineering best-practices. It’s a very long read, so use it as a reference:

http://developer.yahoo.com/performance/rules.html

Content Delivery Networks (a.k.a. CDNs)

Most engineers are familiar with the benefits of caching, deploying caches in their data centers to speed up back-end response times (e.g. Memcached, Squid, RamDisk, etc…). However, few engineers recognize that a breed of caches outside of your data center can deliver equivalent performance gains. These are CDNs. Here’s a concise summary of how CDNs help you and a quick how-to on using Amazon’s CDN for the masses, dubbed CloudFront.

http://www.labnol.org/internet/setup-content-delivery-network-with-amazon-s3-cloudfront/5446/

blog comments powered by Disqus
About Me

A blog describing my work in building websites that millions of people visit. I'm a senior member of LinkedIn's Distributed Data Systems team. I previously held technical and leadership roles at Netflix, Etsy, eBay & Siebel Systems.
Tumblelogs I follow: