It's new marketing on old science, coupled with a piece of
Friedmanian zealotry. Computing as a commodity. All that unused disk-space and CPU capacity going to waste. So let's use it!
Massively parallel computation was very big in the late 80s because of the dwindling production costs of PC components. Why build a highly specialised supercomputer for millions when you could connect thousands of inexpensive PC-like chips costing hundreds of dollars? All you needed was an operating system that would work across multiple CPUs, some way to share and manage memory, and some clever way to split instructions among CPUs.
This sort of thinking underpinned the business of companies like
Thinking Machines. This particular architecture has benefits in cracking certain kinds of physical problems, but it's a niche architecture with a limited market.
Cloud Computing is essentially massively parallel computation using faster Internet speeds to communicate
between computers instead of between processors on the same computer. This is coupled with Software, Platforms and Infrastructure provided as services (SaaS, PaaS, IaaS) either directly or through third-party providers -- though these services can all be provided independently of Cloud Computing. As I see it there are a few potential benefits, but they're niche and I think often outweighed by the costs...
Potential Benefits:
- Software as a Service (SaaS) can potentially reduce software maintenance and administration costs by reducing the effort to install updates -- but you don't actually need Cloud Computing to deliver SaaS;
- SaaS can potentially increase business agility by offer modular software components -- but again, you don't need Cloud Computing to deliver that;
- PaaS, IaaS can potentially reduce downtime by offering low-cost fail-over arrangements -- but IaaS has been around for 20 years, and PaaS has been delivered through outsourced bureau arrangements for 15. All Cloud Computing does is commoditise these services.
- PaaS potentially reduces network bandwidth by shortening communication distances, but it's not a Cloud Computing benefit.
- SaaS/PaaS offer some speed benefits to mobile users because they allow services to be delivered from local servers -- reducing network latency. You don't need Cloud Computing to provide these services though.
- The massive parallelism of Cloud Computing offers some benefits on niche computing problems -- similar problems to the ones that used to be tackled by Thinking Machines, say. They're niche problems though. Not the sort that you have when you're banking, talking on Skype, downloading a movie or playing World of Warcraft.
Potential costs:
Everyone investing in the Cloud wants to make a profit, yet Cloud doesn't offer any more services -- just the same services differently. So ask yourself: if you buy it will you be buying a)
more services or b) paying more for the
same service, or c) paying the same for suppliers to deliver it cheaper? My answer: it's b) and c).
Most of the problems below relate to higher service costs or lower quality of service.
- Third party hosting of your software will increase the transactional costs of computation, not decrease them -- just as paying by credit-card increases the cost of goods and services;
- The administrative benefits of SaaS require investment in more infrastructure. Thus the cost of hosting software increases, but SaaS lets you spread payments more evenly by converting capital costs into variable costs.
- SaaS transactional throughput per machine is slower due to higher latency from software loads, encryption and handshake protocols;
- Distributed transactional processing -- where you get multiple computers to collaborate on making something happen -- is generally done badly in the software industry, and Cloud Computing requires much more of it. Look for higher bug-rates, more failed transactions and more data integrity problems (which to you and me means more problems with your bank balance and lost manuscripts);
- More layers of software management create more layers of security problems. Physical protection of servers remains one of the most critical elements in providing data security;
- To scale and mobilise properly, Cloud Computing leans heavily on encryption so that data can be hosted by third-party providers. But encryption is only good for around 10 years or so before it's cracked. Which means that your permanent private information (e.g. social security numbers, bank account details, commercil intellectual property) should never be processed by Cloud Computing;
- Cloud Computing requires much higher bandwidths over-all, but arguably the most valuable use of higher bandwidth isn't to provide Cloud Computing but to serve richer content.
- It's not clear to me that SaaS-over-PaaS has even begun considering the problems of configuration management and version control, much less addressed them. I can easily conceive situations where a mobile user can't get to their data because they can't find local hosts to run the right versions of their software.
A little Polemic about Commoditised ITC:
The core buzz behind Cloud Computing is the ability to commoditise Information Technology and Communications (ITC) capacity -- rent capacity rather than buy equipment. The more zealous evangelists see this as a wonderfully efficient way to make use of all the unused computing and storage capacity in the world.
There is indeed a tonne of unused capacity, but I'm not convinced that Cloud Computing will give us a better, fairer, Share and Enjoy world. Here's why...
When electricity became a commoditised utility, an electricity futures market developed. That wasn't a bad thing -- in fact it was probably a good thing -- until electricity supply became critical for hospitals and home-care and emergency services communications, and energy market fluctuations began threatening lives. With potable water now a valuable commodity it won't be long before someone starts trading water futures -- with all the social and environmental problems that will bring. We've learned to our cost that it's a bad idea to have a
lassez-faire market for critical commodities -- because they're critical.
In a similar fashion, a global move to Cloud Computing would commoditise compute, storage and bandwidth, allowing futures trading in PaaS and IaaS. It's less critical than water futures but I don't really want to see PaaS and IaaS futures traded in an open market. Who wants business-critical ITC capacity to be hemmed by the strategic purchasing decisions of competitors? Who wants their transactional capacity to be taken down by a hedge-fund? Who wants their banking service browned out because China's in a snit? Or a video-on-demand release choked because ESPN has bought out any spare capacity to run the Superbowl? That's the stuff of cyberpunk dystopias. The problem is that once you move to commoditised ITC arrangements, businesses retool their financial planning around lower capital expenditure (capex) for ITC and that's irreversible. In a low ITC capex market, a business with high ITC capex can't compete. It's not that Cloud Computing is more efficient computing -- per application, it's not. Neither is it a more efficient use of funds. Rather, Cloud Computing is a more efficient use of
credit. Look for the telcos to push Cloud Computing, and the banks to back them up. Look for credit-hungry businesses to chase Cloud Computing as a way to woo the banks: 'I don't have to spend the loan in buying ITC -- I can spend it in
business growth'.
Banks won't care that a business doesn't own its ITC capacity -- they'll love the idea; but customers will care when their Quality of Service suddenly drops and their personal data keeps getting cracked in ways that they can no longer trace.
My view in conclusion:
For the average consumer, Cloud Computing is not the Next Big Thing, and for the average business it's a monster folly. Socially I'm not enamoured of it at all. I'd rather see businesses control their compute and storage just as I'd prefer to see local regions manage their own water supplies. We can't afford to commoditise and outsource critical resources too far.
For CIOs with mobile users on heterogeneous equipment who can't afford a lot of software administration, I can see SaaS-over-PaaS as being highly beneficial though. For little businesses with tight cash-flow, SaaS-over-PaaS has its attractions too.
From an Artificial Intelligence perspective I see no great benefit from Cloud Computing. It's not the stuff of science fiction -- it's science leftovers reheated.
We know from 40 years of bitter experience that our problem in delivering smarter computing lies with the searching methods far more than the machinery. It's just that the machinery improves much faster than the search methods, so every new generation of computing gives us another glimmer of fool's gold. Not only that, but every time we receive faster hardware, we write slower and less efficient software anyway. A lot of the benefit of faster hardware is sunk into reducing development costs by automating more software development.
If we want really smart, adaptive computing, one or both of two things has to happen:
- An utter revolution in computation and memory -- e.g. biocomputing -- rather than the evolutionary improvements we've been seeing
- Someone has to find really, really smart search, modelling, response and inference methods. The ones we have are fine for simulating small ant-nests, making challenging computer games, automating manufacture and inventory control in supermarkets, but inadequate for traffic management, flight-scheduling or stock-market predictions -- any of the seriously complex large-scale computations we need on a daily basis.