July 6, 2009

I recently went to see the latest Terminator movie, Terminator Salvation. I have to say that I’ve always been a great fan of this movie, even though I don’t really believe in such a catastrophic future. Nevertheless, after watching the movie, which was pretty decent by the way (a little soft at the end though), I start thinking about how smart Skynet is depicted in any of the Terminator movies. I though, hey, if you could just nuke the datacenter where Skynet is, you would eliminate it. But then I started thinking about cloud computing.

For those unfamiliar with cloud computing (those familiar can skip this paragraph), it’s basically a new way of using computational resources (I’m oversimplifying the idea here though). Instead of buying or renting servers to deploy any web application, you rent computational power from a provider and pay by the hour. In a simple way, companies with spare computational capacity on their own servers, will rent you that time for you to use. There is no need to buy expensive hardware or maintain it. Instead you use the computational units the time you need them and as many as you need. That way you can take care of temporal spikes of usage in your applications by means of using more computational units and switching them off after the spike. The cool thing about it is that you don’t need to care about the underlying hardware you are using, nor the replication of your data. That is, the cloud system will maintain several copies of your data transparently so that if you loose data, you’ll still be able to recover it.

So, back to Skynet. Most cloud computing systems are built so that they are extremely reliable, that is, if any of the servers that are used fails, the system will switch to a new server transparently. The end user won’t even notice the underlying hardware had a problem. The same happens for the data too. Those advances are part of a field known as high reliability and, although it’s not perfect, they are getting there. In a close future, few web applications will experience downtime because of faulty hardware or problems in the datacenter (like the recent lightning that struck an Amazon datacenter). That means that servers will be so extended that even if you nuked one of the cloud provider’s datacenter, systems won’t go down. Most probably a bunch of other datacenter all over the world will take over and you, as a user, wont notice anything.

Now, if you think about Skynet and strip out the AI, the backbone of it is just what cloud computing is trying to achieve right now. How many years more will we need to build a system that has not a single point of failure? Scary thoughts…