Is your application ready for the real world?

I spent this weekend testing some of our clients new applications in the wild – literally. In these parts of the woods Internet is bad enough on sunny days, and it gets MUCH worse when it rains. So I was getting all kind of errors on “production-ready” application that was fully tested on intranet.

Well, that does not really mean much in the real world. Here I was getting random disconnects, lost, out of sequence, corrupted and duplicate packages. The application was very much confused at best.

By the time it stopped raining I was ready for more. So I set up a Linux server, installed netem’s network emulation software and deployed my application there. By doing that I was finally able to put in order some chaos of disruptive networking issues. Netem allows you to provide any permutation of the latency, out-of-sequence packages, lost and erroneous ones, duplicates over local network – in this case, within VMWare on my laptop.

By the end of the day I am able to make the system work on par with the last century cell phone modem connection. That is just a pure luck that the system was designed with all the hooks for custom QoS and did not require rewrite of the communication server.

Quick setup of that VM as a bridge ( VMWare provides virtual adapters, you can just route your local traffic via that VM), and I am testing publicly available AJAX and Flex sites. Very few survivors out there – most of the applications die quietly at best.

Rich Internet Applications are being positioned to replace their client/server peers. It is extremely important that they can deal with disruptions in a robust manner, so the business operation can continue uninterrupted in a slow mode. Breaking transactions is not an option. Given utmost priority to this will affect design of your production-grade application and development schedule.

Sincerely,

Anatole Tartakovsky

Personal note: I noticed today that I am spending less then 30% of my time in Microsoft OS and most of the time in Linux. It appears that all 3rd party system developers are abandoning the platform – there is virtually no shareware/inexpensive or just decent tools for network simulation. As for usability, few times this week I was about to remove Vista from my desktop. It is definitely time to switch from Microsoft to Linux/Mac for base OS. Too bad Apple can’t fulfill on the promise to make OS available on high-end PCs – it just does not make sense to go from thinkpad t60p to Mac laptop – they are virtually identical, with better expandability on thinkpad side.