Bandwidth: Easily underestimated and over-looked

Bandwidth needs are frequently underestimated

When you think of an application that utilizes a lot of bandwidth, your thoughts generally gravitate toward sites serving digital media content: movies, music, images, etc. Although certainly true, many might be surprised to hear that bandwidth is a common performance bottleneck in seemingly unlikely applications.

Take a wizard-based shopping cart/ordering process, for example. In these applications, the state of the order, along with the order details, is passed from one step to the next. As a result, the requests and responses grow in size with each step in the process. The response data for each page alone routinely exceeds 100KB – let alone any static assets associated with the page. Despite typically longer think times in these types of scenarios, overall they are high bandwidth consumers. This was the case with a recent customer test where a surprisingly low number of concurrent users maxed out the 1Gbit/second ISP link going into the customer’s datacenter. This was true despite the fact this customer had properly implemented a CDN to offload static resources. These resources were being served from the CDN at a rate of 3Gbit/second under load. Had this customer not utilized a CDN, the ISP link for this heavy-bandwidth application would have supported only a fraction of the target users.

Not only can applications themselves be heavy consumers of bandwidth, but application development platforms also impact bandwidth usage. Take, for example, .NET applications, which utilize viewstates to maintain state throughout the use of the application. Depending on the application and the complexity of maintaining state, the overhead created by viewstates can have a significant negative impact on performance.

Why do performance teams overlook bandwidth as a bottleneck?

Clearly, sufficient bandwidth is an important part of the performance of any web application. So why don’t more performance teams pay closer attention to it? A number of common reasons come to mind:

(1) In some cases, performance teams overlook the issue because they simply don’t know what their corporate bandwidth limit is. ISP links are maintained by operations or networking teams to which, particularly in large corporations, the performance team members may not have direct access. Not only that, it may not be known by the application tester what other applications or websites are on the same ISP link. In a recent test, the customer learned the hard way that the application under test shared the same 100Mbit/second ISP link as its parent company’s corporate website. The lesson: communication with all stakeholders involved in the performance project is critical – especially the team that manages the application’s ISP link.

(2) Performance teams have never had the ability to actually run external tests to the scale their applications will see under load. In the past, they’ve done testing on an internal 1Gbit/second network where, presumably, bandwidth wasn’t a limitation. With SOASTA CloudTest, the actual path of user traffic (including the ISP link) is tested – just like it will be when the application is under heavy load.

(3) Simple under-estimation of how much bandwidth is actually available. Someone might hear they have a 100Mbit/second or 1Gbit/second ISP link available and think this is a lot. It may or may not be. It depends. Make sure you do your bytes-to-bits conversions, test at volume, and analyze how much data is flowing across your ISP link.

Ultimately, bandwidth usage is critical and can dictate the scalability of an application. It is just as important as a properly configured load balancer or setting the application server’s heap size correctly. It can’t be overlooked or your customer experience will suffer.

CDNs: Great for Performance, but not a Guarantee!

Content Delivery Networks (or ‘CDNs’) provide a way to spread the static assets for a web application to different geographies and different networks to improve the performance of a web application.  The performance gains are primarily the result of assets being located closer to the end user and on faster network connections.  As a best practice, SOASTA recommends that web applications make use of CDNs whenever possible.  It is an easy way to improve the performance of a web application and the number of concurrent users a web application can support.

Some have the misconception that simply implementing a CDN for a web application eliminates the need to pay further attention to performance concerns.  That couldn’t be farther from the truth.  Implementing a CDN certainly improves the performance of an application.  However, all it does is move the needle.  Let’s say you have a site that can support 3,000 concurrent users before the application bogs down.  Adding a CDN to the mix will perhaps allow you to support 4,000 users before the application bogs down.  It just changes the point of failure – not eliminate it.  And that assumes that the delivery of static assets was the bottleneck in the first place.

A CDN does not help overcome performance issues at the application and database layers.  We’ve worked with many large, well-known web applications and found significant issues at the application and database layers – that weren’t mitigated by the use of Akamai, Internap, or some other CDN vendor.  Implementing a CDN won’t help you overcome a misconfigured java heap.  It won’t help you overcome garbage collection issues.  It won’t help you overcome indexing or other database bottlenecks.  It won’t help you overcome a misconfigured load balancer.  These are the issues that running a load and performance test utilizing real-world user scenarios will help uncover.

Based on the tens of thousands of tests SOASTA has executed, CDNs and static resources are rarely the point of failure in an application (unless the network is saturated because a CDN has not been implemented).  More often, the performance bottleneck is at another layer of the infrastructure: load balancer, firewalls, application, and database servers.  As a result, if you don’t run load and performance tests against your web application, you aren’t even testing the most likely places your web application will break.

Email Us!
Subscribe to our Feed!
Join us on LinkedIn
Find us on Facebook
Follow our Tweets
See our pics