Cloud Computing Skepticism: An Economic View Wednesday, March 24, 2010 at 8:01 am
I’m a cloud computing skeptic. Let me explain what it is and why I have this skepticism.
“Cloud computing” has, over the past few years, become a buzzword for technology marketers pushing a certain type of client-server computing. Client-server computing describes arrangements like the internet, where you on your machine (the client) send and receive little packets from another machine somewhere in the world (the server) that is processing and serving up data. That’s how you’re viewing this website, and all other websites. Your client machine sends a request to some server, which in turn sends data to your client, and so the loop repeats over and over.
Cloud computing is a term signifying the use of this client-server model to run programs which are normally run on your local machine. Google Docs is one example of this. We’re all familiar with Microsoft Office, where you purchase software, install it on your computer, and then run the program on your computer. This is the traditional model. A cloud computing version is something like Google Docs – where rather than installing and running the program on your machine, the program runs somewhere on a Google server and it sends you the results (the formatted document, etc). There’s still some computing going on on your end to display the data but typically this is minimal. And although the term “cloud computing” refers specifically to the process of computing data, this model usually stores saved data “in the cloud” and not on your local machine.
This certainly represents a significant change in the computing paradigm and many new opportunities, but I see at least two significant problems with it: privacy concerns and technological-economical limitations. The privacy concerns are things that non-technical people like to talk about being a problem with cloud computing – and I agree with them on this. How can you guarantee that your data will be secure from peeping eyes when it is located in a server somewhere (you don’t know where), subject to the laws of the government of the country where the server is physically located and the good will of the company’s employees and their internet security policies? That in and of itself is a huge political and security problem for the concept of cloud computing; however, rightly or wrongly most of us already freely hand over Facebook a lot of our personal data without much hand-wringing.
But to my mind, the technological-economical issues are much more damning, and they are more easily thought of by modeling computing and internet connectivity as commodities rather than technological innovations.
The cloud computing model requires two commodities: the first, computing power, represented by some more or less desireable and more or less powerful configuration of hardware that crunches numbers and runs programs. The second commodity is connectivity between machines. The cost of this connectivity commodity – both in quality (usually measured by speed) and dollar price – varies depending on the machines involved, their location, and the type of the connection (cable, dial-up, DSL, T3, etc.) .
In the traditional computing model, the only commodity you need is the computing commodity – the amount of processing power available to you. As with most commodities, the more you pay for it, the better the thing you have is (in this case, more powerful processing). But as the internet has spread, the communication commodity has become more and more important. Because connectivity was initially very expensive (a very high dollar-to-bandwidth ratio), the internet served chiefly text. Then, as the dollar-to-bandwidth ratio decreased and bandwidth became more available, internet content expanded to include images, and then audio, video, and interactive content. What the cloud computing model is banking on is that bandwidth is now cheap enough and available enough that rather than running a process locally, you can utilize that bandwidth and talk to one of the already existing tens of thousands of collections of servers all around the world and have them more efficiently do most of your computational work for you and send the results back to you locally. It’s important that the “more efficiently” part, for reasons I won’t go into, isn’t much disputed. Everything is computed far away and you get to see and interact with it on your screen and keyboard. Plus, you can then access all your programs from any machine as long as it’s connected to the internet, because all your programs and data are living out there in the cloud somewhere. It’s a miracle!
The problem I see with this is that the local processing commodity is currently (and I suspect always will be) far cheaper than connectivity. Your local machine executes single commands at the order of one every few nanoseconds. The time it takes you to send and receive a packet of information from a server is, if you’re lucky, on the order of a couple milliseconds. Already, talking to a server is far more costly than running a local computation when it comes to speed. This makes intuitive sense, however: in order to compute something locally your processor must shuffle data among its local caches and memory, communicating at the speed of electrons-over-a-wire over a few inches of space (the speed of light minus some significant not-in-a-vacuum costs); whereas communicating with a server somewhere is the same cost over miles and miles of distance plus intermediate routers directing your data where to go. Doing things long-distance always takes more time.
But if we’re talking nano- versus milliseconds, do we really care? The human brain doesn’t notice time on that scale so perhaps it doesn’t matter. Aside from the obvious observation that long-distance communication is slow, long-distance communication is also costly. Monthly internet charges are often $40-$50for the lowest level of broadband connectivity (at least where I live). Computers, on the other hand, run from $200-$300 for the cheapest netbook to $1500-$2000 for your really snazzy MacBook Pro or other high-end device. The point is that the cost of the computer is equal to somewhere between 4 (on the low end) and 30 (on the high-end) months of low-end broadband connectivity.
But people already pay for broadband connectivity, so why not utilize that existing resource to further drive down the cost of the end-user computer, since we are already connected to the internet at these high speeds? I would suggest two reasons: the first is that that difference I illustrated in computational cost versus connectivity cost is going to be paid by someone – there is no free lunch. Either the company providing the cloud computing is going to pay for better connections to their servers for the masses (driving up the cost of their service), or you are going to pay for a better-than-low-end broadband connection to more effectively and quickly communicate with “the cloud” that is running your programs. Because connectivity is expensive, someone will pay for it, and either directly or indirectly costs will be passed on to the consumer. The second reason you cannot simply co-opt existing end-user internet connections for generic cloud computing is the way cable modems work. A cable modem shares its broadband among multiple end-users. This is a great system as long as not too many users are doing too many heavy communication tasks at once. Currently, this almost never happens, and broadband usage follows a continuum from the normal user whose heaviest tasks are watching Hulu and doing the occasional download to the much rarer user who is constantly downloading and uploading gigabytes of data (usually illegally) over peer-to-peer torrents. My point is that if we are all constantly communicating our dara on everyday computing tasks over the internet, we’re going to look less like the modern everyday user and more (although never completely) like the heavy-end torrenting client, taxing the cable broadband infrastructure we’re relying on for connectivity. And increasing that broadband is (again) going to be more expensive than offloading tasks to local machines.
This may seem a bit like an arm-waving exercise since I haven’t quoted direct data and hard numbers. Fair enough: this is partly because I’m lazy and partly because this isn’t meant to be in any way scholarly, just my own mad musings. But where does this leave me in my skepticism? I suspect that data-light computation can (and maybe will be) easily be offloaded onto the cloud: things like word processing, spreadsheets and the like, and viewing videos (the computational power required to store and serve up the data is extremely minimal compared to that required to display it to a screen – this is why Netflix streaming and Hulu are already easily functioning). Streaming data that is then rendered and output on your local machine is pretty easy; this is already happening – it is when you want to in any way modify this data that it becomes a problem. So I don’t think programs like Photoshop or any video editing software could be offloaded into the cloud. Same thing for operating systems: these will always be local, although there is occasionally the starry-eyed optimist thinking this can be done over the internet. Ditto for computer games (although we’ve become pretty committed to a gaming console model): to a limited extent data can be communicated easily over the wire, but you still need fairly beefy hardware to store most of the game’s data locally and compute all of it locally. I suspect the limit of cloud computing is this: because of the high cost of connectivity relative to computing power, simple and common end-user tasks, including office productivity and media consumption, can easily be moved to the cloud, but increasingly popular media-interactive tasks like photo and video editing, and games will always require computation to be performed mostly on local machines.
I may be totally wrong on this, and if you have a different opinion I’d love to hear it. The tasks I’ve listed that I think are amenable to a cloud computing model represent the majority of user tasks on a computer, and so I think there is a legitimate potential space for cloud computing (barring security/constant-connectivity concerns which could potentially be cloud-killers); it is just far from a panacea for all computation. Ultimately, I think the extent to which cloud computing catches on depends on the value people assign to its benefits (data and interactive programs available from any computer) versus the presumably-higher cost of cloud computing.



