What does the speed of your Ajax web app really mean?

I have created several blogs lately where I have measured the performance differences between Phosphorus Five and all sorts of alternative Ajax libraries, such as jQuery, Infragistics, ExtJS, etc. The numbers are in the range of 50-200 times less bandwidth usage. However, what does this actually mean for you as a web developer? Well, let me use my own home as a use-case …

I am on a 50Mb connection where I live. However, my upload speed is only 5Mb. That translates into being able to upload 0.625 MB per second.

Below I have a screenshot of Sephia Five. The important parts are the parts encircled with red. The total initial download is 59.5KB of data. Notice, my cache is turned off though, as you can clearly see. If my client had cached the static resources, the total initial page load would have been 8.6KB to load my inbox.

Assuming 98% of the HTTP requests to my site has cached all the static resources, this would imply the average page load being around 9KB in total. Since my internet connection at home as a total theoretical limit of 0.625MB per second, this means that if I setup a web server at home, and paid $3 for a fixed IP address – I could theoretically serve roughly 73 clean page loads per second. Multiply that by the numbers of seconds per minute, and the number of minutes per hour, and the number of hours per day – Means I could serve 6307200 page loads per day!

If we assume that I have a shit load of users in my “GMail competition company”, and each user loads his inbox on average 10 times each day. This means I could create a GMail clone, all other factors set aside, and have 630720 users being my customers, on an average home internet ADSL connection, with really shitty bandwidth. Google is using hundreds of thousands of servers to deliver their product, and they’re pulling their own cables across the Atlantic ocean, in combination with Facebook to be able to deliver their services fast enough.

I live in Cyprus, which has about 800000 people. Assuming 170000 of these are too young to read emails, this means that in theory, I have enough bandwidth in my home, to setup every single citizen of Cyprus with an internet webmail service, using my home ADSL connection as the foundation.

Of course, when creating a service for hundreds of thousands of monthly users, there are a lot of other factors that comes into play. The above numbers also assume that the page load is perfectly evenly distributed across all the 24 hours of a day. But in theory, over a “shitty home internet connection”, I could serve 6.3 million page loads every single day, over an internet connection, that costs me $30 per month! If I had a handful of 5-10 year old PCs, with very large hard discs, I could serve the entire island of Cyprus, with a PGP encrypted email service, with an initial cost of 5 10 year old PCs, and a fixed monthly cost of $33.

To startup a webmail company in Cyprus, serving the entire population of Cyprus with encrypted emails, would cost me (in theory) no more than $5000 in initial costs, and $33 per month for an ADSL connection.

If I charged my users $1 per month for my service, I would earn 669997 dollars per month!

For the record, the above is an extreme use-case, and wouldn’t be practically likely to pull off, since first of all the bandwidth consumption would spike in working hours, 8-4, and be close to nothing during the night, etc. In addition, it would require huge amounts of storage, which would cost much more than $5000. But it illustrates the importance of having a *tiny Ajax library*!

Below is a screenshot of GMail’s bandwidth usage for loading the same inbox. Notice GMail uses 3.9MB, which is 67 times as much bandwidth as Sephia Five! This means I would need 67 times as much network to host GMail, as I would need to host Sephia Five!

That is disruptive technology!

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s