What is Cloud Computing?
In many ways, cloud computing is simply a new way of looking at and talking about virtual servers. Or, as Dan Hoffman, CEO of M5 Networks, puts it, "Cloud computing is indeed a new name for an old idea." He goes on to say that what this means is that instead having a software application running in a server room down the hallway from a person's office, the application runs in datacenter. And, this datacenter doesn't need to be anywhere near the office, either. In fact, you may not even know where the datacenter is.
Hampton Catlin, author of Haml and Wikipedia's head Ruby/mobile architect, has firsthand experience with this. His Rails 2.3.1 template generator, railsboost.com is running in the Amazon cloud. "Cloud computing," he explains, "is, in general, using remote servers whose specifics are unknown to you. Typically, this is using server resources in a large mainframe cluster. You don't know where the server is, what its physical properties are, or nearly anything about it. What you do know, is its general power. It's using remote resources in an expandable and configurable way."
What Makes Cloud Computing Different Than Virtual Servers?
Most often, cloud computing is talked about in terms of "service in the cloud" or "running services in the cloud." It's this service component that makes cloud computing so much more than just virtual server space. George Reese, CTO of enStratus Networks and author of the book Cloud Application Architectures (O'Reilly Press), prefers speaking about cloud computing in terms of service. That, he says, is the way the cloud really affects people and businesses. Reese provides a set of criteria to determine whether a service can be called a "cloud service."
- Is the service accessible via Web browser or a published programming API?
- Is there any capital expenditure required for start-up? (The answer should be no.)
- Are you only paying for the services you need?
"In the end," says Reese, "what the cloud really amounts to is: it’s not my problem." Lest you misunderstand, he explains further. "It arises from the fact that throughout IT history, we have always drawn our network diagrams to list out the components of our infrastructure and used a cloud to represent the stuff that was someone else’s problem. Whether it was the Internet or a business partner’s network, it simply was not our problem (in the sense we were not responsible for it, not in the sense that we don’t care about outages)."
Software as Service
Who is responsible for the maintenance and deployment of applications in the cloud really depends on what type of presence you have in the cloud. The most significant difference between the cloud computing model and virtual servers is that cloud computing provides users with a number of different options for doing what they want to do. The three most commonly talked about are: software as service (SaaS), platform as service and infrastructure as service.
"With SaaS, the applications and the data used within the applications are all stored “in the cloud,” which means the user doesn’t need any additional software or hardware on-premise in order to use and access them, and often a standard web browser is used," explains Paul Wood, MessageLabs Intelligence Senior Analyst, Symantec. He points to Webmail and online word processing programs (such as Google Docs) as examples of SaaS.
Reese expands on this idea, explaining that software as service is a solution that eliminates the need to use licensed software. The downside of this? Privacy. Reese notes that when you are using online software solutions, you need to be much more aware of privacy and security concerns.
Platform as Service
Platform as service, or PaaS, is a little different, for which there seems to be no non-cloud metaphor. Anthony Velte, co-author of the upcoming Cloud Computing: A Practical Approach(McGraw-Hill Professional), sees SaaS and PaS as overlapping ideas. "Generally," he says,"software as a service provides the user with a particular application whether off the shelf or custom developed. The service provider takes care off all the maintenance and delivery aspects required for that application. Platform providers take this concept to a slightly higher level by creating an environment to run more than one application."
What does this mean for the user, exactly? You can think of it as sort of a buffet. The restaurant is offering up an eclectic selection of foods, from which you can pick and choose to create your own meal. You don't have to cook the meal and you typically pay one price for the buffet no matter what you eat, but if you order off-menu there may be an extra charge. Here, however, the restaurant is actually a cloud computing company and the selection includes things like widgets, shopping carts and web editors.
To extend the buffet metaphor, the caution in this is that once you choose your food, you can't decide to eat it at another restaurant and have no control over the environment in which your food is cooked. Dave Vandervort, Architect-Client Hardware/Software for Xerox Innovation Group puts it simply. "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."
Velte thinks this is a smart move for smaller enterprises who can run their own applications but rely on the cloud computing company to provide maintenance and necessary components for the application. Others aren't so sure. Vandervort notes that implementing PaaS is complex and he's skeptical of the maturity of current offerings. Reese agrees that it makes it easy for rapid development of smaller applications, but points out it "is a poor environment for running large-scale or mission critical applications." And, Wood cautions that PaaS has the potential to tie developers to a vendor's platform and, should the vendor change platform or direction, it can be a costly venture to switch to something new.