There are a number of very intelligent, talented people saying "I just don't understand the cloud computing model" or "I understand this concept, but how is it affecting me, my family or my business?"By posing these questions (and more) to a number of programming experts, we've been able to come up with some answers.
Here's what Dave Vandervort, Architect-Client Hardware/Software for Xerox Innovation Group, had to say about Cloud Computing.
RubyGuide: In basic, layman's terms, how would you describe cloud computing?
Dave Vandervort: Cloud computing uses large amounts of computer hardware as a single pool of computing resources rather than as a lot of individual computers. The user does not have to know or care where the hardware is located or what capacity it has (up to a point). Need more storage space? Another slave db server for your website? They can be created in the cloud without you having to install a whole new server, run cables, etc. When you no longer need that extra capacity, turn it off and forget it ever existed. Typically you only pay for the capacity you use, not the entire infrastructure life cycle.
RG: Can you explain a little about the differences amongst the software as service, platform as service and infrastructure as service models of cloud computing?
DV: For starters, Software as a Service, is not strictly a CC [Cloud Computing] concept. It’s simply the idea that a web platform such as Google Docs can give people all the functionality of software installed on their computer, without the need to install anything beyond a browser. SaaS benefits from the cloud because the cloud makes it very scalable.
The idea behind platform as a service is that resources are made available for building whole applications as components, rather than programs to be written. Widgets, web editors, pre-built shopping carts, whatever pieces you need could be offered by a single vendor for the user to mix and match at will. What goes on behind the scenes – for example the server operating system, or even the programming language services use – is all abstracted away from the user. The vendor provides enough infrastructure to support easy scaling and charges, cloud-fashion, for use. This is a very complex thing to implement and I’m skeptical of the maturity of current offerings. I think they have a long way to go.
Infrastructure as service is where cloud computing is currently strongest and showing the most innovation. This is something like Amazon’s Elastic Compute Cloud, that allows you to ramp up virtual servers in a short time to meet transitory demand.
RG: In the cloud, who is responsible for the virtualization of applications?
DV: In platform or software as service models, the vendor handles that. In the infrastructure models, the user bears most of the responsibility themselves. The vendor provides the platform, the user decides what it will be used for.
RG:How many of the cloud computing companies out there are providing not only service but development as well?
DV: Very few at this point. Most companies provide one or the other. There seem to be growing numbers of companies that use cloud infrastructure to make the things they develop for customers more scalable. This is understandable since setting up the physical structure for cloud computing is very expensive and requires some specialized skills. I think the current situation where infrastructure is dominated by a very small number of key players, while others depend on that behind their own service offerings, will remain the norm for the foreseeable future.
Obviously, a couple of the big players (Google, Amazon) like to have their fingers in to all ends of this pie, hardware and software. But even there, they tend to have clear limits. You can use Google widgets to develop amazing things but then those are yours. Your problems. You are basically running your own code on their backbone. Or you can use the services they have developed, such as Amazon Mechanical Turk.
RG: Who is responsible for maintenance or choosing the platform/language on and in which the application is deployed?
DV: For the most part, if you are developing an application to run on someone else’s cloud, maintenance is your problem. As I said, few companies are offering development of apps to run on their own cloud. If that is the case, maintenance would be negotiated in the terms of service. That’s standard in software. When you contract someone to do work, you have to establish the scope of the work. The wider the scope, the more it will cost.
RG: I think people tend to think of cloud computing as a business solution as opposed to a way of navigating the Web. How is the average end-user affected by cloud computing? Is the average person who sits down to surf the Web participating in cloud computing?
DV: If cloud computing is done right, it should be completely transparent to the end user. They should never know if there is one computer behind the scenes or a thousand. They should never have to think about what continent the software is hosted on or see a delay because of increased demand. If someone writes a Google app, they aren’t “participating” in cloud computing. They’re just using an app, no different from any other as far as they are concerned.