“A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable. ” — Leslie Lamport
Complicated server-based distributed systems put too much fragile technology between you and getting your job done.
How many times have you sat down at a computer to do a job that should only take 5 minutes and have it end up taking an hour or more? The computers on our desktops are only just reliable enough to do useful work on, and adding an Internet connection, a server farm and all the links in between to the list of things that can stop you doing work is simply a bad idea.
The principle of 'Mashups'—while they are a really fun idea, and there is no doubt about the cool results that can be achieved—are a great example of how not to build a dependable application. For a giggle sometime try and write a list of all the points of failure that would stop your favourite mashup from working. Here's some of the potential failure modes I could think of for a fictional 'failr.com' Web 2.0 mashup:
|
Google maps change their API access restrictions |
The hosting company for failr.com drop off the internet |
failr.com goes bust |
Your ADSL router drops out |
|
Your ISP's connection to the internet goes slow/broken |
Your 802.11g connection drops out |
failr.com makes slashdot and is crushed under the load (think twitter) |
A hardware upgrade at failr.com takes longer than expected |
|
A hardware upgrade at failr.com is scheduled, and happens to fall right when you need it most |
The company hosting the static images on the site has an outage |
The folks roll out an upgrade with a new bug that bites you |
Your computer crashes |
If I were a gambling man, I'd bet that an application that got rid of 11 of those 12 possible failures would be more reliable. I'd also prefer to reboot my computer than tackle any of the other problems.
One of the key design decisions that made the internet great was the fact that all the clever stuff is pushed towards the edges, and the core was made as simple as possible. Even though the core of the internet basically only answers DNS requests and forwards IP packets around, it is still a major engineering task to get right.
Why is everyone raving about 'cloud computing'? Apart from the new name ('client-server' in the 80s then 'thin client' in the 90s), Google want to index all your personal data to serve you adverts, and Microsoft want to charge you £15/month for Microsoft Office. Cloud computing is a really good idea for them, but does it actually help you?
You already have a very capable computer on your desk. You have the control to be able to trade off new features against reliability. Response times are minimal. It is pretty reliable already, and you can buy a spare if needs be.
When it comes to getting my job done, I'll be keeping my tools on my desk.
