Tuesday, September 6, 2011

Bite some bits from your bandwidth

With broadband connections aplenty, it can be easy to forget that at the end of the day someone is paying for the bits and bytes that are getting transferred around the globe. The price for buying an app — not the cost of using the app - is usually foremost on a developer’s mind.

The overall cost of an app can be broken down into three parts: the app, bandwidth, and time.

  • Cost of the app: People consider the upfront cost of the app, plus upgrades and/or subscriptions they will need for the app to perform according to what they desire.
  • Cost of bandwidth: People are generally aware of bandwidth usage, however, it is not usually until after excessive consumption that they discover the real cost of their apps. This is especially problematic if a big bandwidth bill unexpectedly arrives.
  • Cost of time: The amount of time required to use an app is worth money. Slow apps that don’t work are not only frustrating but also use valuable time that could be put to use elsewhere. Apps that are difficult to learn can get abandoned, resulting in a complete waste of time and frustration for the user.

Video-based apps are a great example of where people give heavy consideration to the cost of the app, but not as much to the other two factors until their bandwidth bill arrives or they look at the clock.

We can assume that the upfront cost of your app and upgrades is fixed to a certain degree, but what about your bandwidth usage? Are you saving time through your use of the Internet and your app, or are you adding bandwidth and time? Apps can quickly rack up the bandwidth bill if data transfer is not managed or monitored during the development process. There are many places that bandwidth can be saved through optimizations, and app developers should set this as a priority not an afterthought. Here are some ways that you can save bandwidth and time in your apps.

1: In-app processing

Processing content within the app or before sending it to a server can reduce bandwidth consumption. If content that is to be uploaded to a server can be compressed or otherwise optimized, the reduced transfer time will save bandwidth costs and time communicating with the Internet. If a data processing function can be accomplished just as fast or even at the same rate on the app-side, it may be better for you to have that processing occur within the app before sending it to the server rather than sending it to the server and waiting for processing and the results.

2: Server-side processing

Oftentimes, it may be better to have processing handled on the server side. In this case, you will want to optimize the number of times your app has to communicate with the server. If you combine multiple data requests into one request with multiple sub-requests that can be parsed on the server, you will save time. If you can do the same for returned data, you will reap time-saving benefits twice.

3: Count your bytes

For server/app data exchange, JSON and SOAP are good technologies, but you may be able to save bandwidth through formatting of your own devise. This is applicable to both app-side and server-side processing and can be helpful in situations requiring a live data feed. I have used delimited text for returning results from a server to an app. Splitting delimited text can be quicker and easier than parsing JSON or SOAP if the data is simple enough.

4: Cache your content

Caching content on servers has been standard practice for reducing bandwidth for a long time. Applying caching techniques to app development is equally valuable for performance purposes and efficiency. Pinging servers constantly can usually be avoided unless a live data feed is required. If you don’t need a live feed of data, then cache locally to the device whenever possible.

5: Optimize your media

Apple has already taken steps to directly impact the use of bandwidth and streaming within apps. If you are looking at using video in your apps, then make sure your video is encoded to the best possible settings based on the actual content. The best experience for an end user comes from well-tweaked streams. If your content is static and manageable in size, consider including it within the app rather than via an in-app download or streaming.


If the bandwidth usage of your app has not been optimized, then the overall cost of your app has not been optimized. If you can reduce the amount of bandwidth your app is using, you can also reduce the amount of time needed for users to use your app, and this will add value overall. Broadband access may be more available than ever, but developers should still consider bandwidth optimization from the beginning, for the benefit of end users and the Internet in general.

1 comment: