February 18, 2008 |
Still half out of it recovering from the flu, I caught a few blips crossing my Twitter stream about Jaiku being down. I yawned, assumed some server farm somewhere tanked, and haphazardly clicked a link to check it out.
Yep, Jaiku is down. Only, it's not. The site is up, which means something is working somewhere, but the reason is “two disks kicked the bucket.”
Occasionally I have to consult with people still doing web app development to see how far back in the dark ages my knowledge of best practices now resides, but “two disks kicked the bucket” seemed like a poor excuse for an outage. My consultation confirmed that things hadn't changed that much.
I've frequently railed about the problems with many of the Web 2.0 apps that are out there from a technical perspective, but Jaiku's outage is a glaringly obvious example. If you don't build an app to scale properly at the outset, you need to bag your code and do it the right way. This tendency to slap a Band-Aid® on each little problem and cobble something together isn't an approach that can work in perpetuity. At some point, your app has to just work, and keeping the “beta” tag on your logo isn't a free pass.
I'm sure there are those who will compare last week's Amazon S3 outage to this, but the two aren't even remotely similar. A data center outage is not only a rarity, but usually due to some unforeseen circumstance that is not only rectified, but is then followed up on to make sure that same circumstance won't occur again (like Amazon is doing with the issue of authenticated calls that brought S3 down). You can't consider hardware failures unforeseen; hard drives fail all the time. If you built your app to distribute the data held in memory across multiple servers, with, say, an archive process to an actual database, if one server fails, the site doesn't go down.
Why don't more folks developing apps start out thinking about what might take their app down? The little-guy shtick only goes so far; at some point, you still need to view yourself as a professional. An app that can't handle a drive failure screams amateur.