Tuesday, March 17, 2009

Cloud computing in education

Berkeley's computer science program has a long tradition of integrating research into teaching, at all levels from undergraduate to PhD. Last year we piloted a successful SaaS project course using Ruby on Rails; this year we offered a more advanced version of the course that introduces students to the challenges of SaaS operations (scalability, availability, etc.) using cloud computing, with a generous donation of AWS credits from Amazon. I wrote a short article for Berkeley's IT newsletter on why we did this and what our experiences were. It turns out that besides being easy to administer, utility computing was a great fit for the bursty demand associated with a lab/project intensive course. Amazon will be expanding its support for cloud computing in education soon, and I'm sure we will be looking at moving other courses to cloud computing as well.

Monday, March 2, 2009

Is Everything Cloud Computing?

We waited for the dust to settle before commenting about reactions to our Berkeley View paper. One of the most frequent comments that we got from several bloggers was that our definition of Cloud Computing is too narrow, and does not include, for example, internal data centers. Granted, a lot of cloud computing ideas can make private data centers more efficient. However, as we explain below, there are two serious drawbacks to including internal datacenters in Cloud Computing.
  1. It will be very hard to come up with an easy-to-apply, widely-adopted definition that clearly demarks when an internal datacenter should be properly included in Cloud Computing and when it should not.
  2. Even if you overcome drawback 1, many of the generalizations that apply to our definition of Cloud Computing will be incorrect for a more inclusive definition of Cloud Computing. Such inconsistency is a reason some think the claims for Cloud Computing are just hype.
To come up with our definition of Cloud Computing, we spent six months reading white papers and blogs, arguing about this issue ourselves, and receiving comments on drafts of our paper from dozens of leaders in industry. Like others, we found a lot of imprecision and inconsistency as to what is and is not Cloud Computing. We think imprecise definitions cause the allergic reactions to "Cloud Computing" claims exhibited by prominent figures like Larry Ellison, who said, “we’ve redefined Cloud Computing to include everything that we already do.”

Hence, to be more precise, in Above the Clouds, we defined Cloud Computing as follows:

Cloud Computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the datacenters that provide those services. The services themselves have long been referred to as Software as a Service (SaaS), so we use that term. The datacenter hardware and software is what we will call a Cloud. When a Cloud is made available in a pay-as-you-go manner to the public, we call it a Public Cloud; the service being sold is Utility Computing. … We use the term Private Cloud to refer to internal datacenters of a business or other organization that are not made available to the public. Thus, Cloud Computing is the sum of SaaS and Utility Computing, but does not normally include Private Clouds.
Regarding the first drawback to a more expansive definition, you can include nearly everything in IT involving server hardware or software, leaving yourself vulnerable to people like Larry Ellison calling you a marketing charlatan. Alternatively, you have to come up with further distinctions of which kinds of internal datacenters are Cloud Computing and which are not. Good luck coming up with a short, crisp definition and having it widely adopted.

Regarding the second drawback to including internal datacenters, an expanded definition will break most generalizations about Cloud Computing. Here are two examples. Virtually no internal datacenters are large enough to see the factors of 5 to 7 in cost advantages due to economies of scale as seen in huge data centers that we believe, as we say in the report, are a defining factor of cloud computing. Many internal datacenters also do not have the fine grained accounting in place to inform users of what resources they are using, which makes it hard to inspire the resource conservationism provided by the pay-as-you-go billing model, which we identify as another unique characteristic of Cloud Computing.

Of course, it is possible to run an internal datacenter using exactly the same APIs and policies of Public Clouds; presumably, that is how Amazon and Google got started in this business. Running an internal data center this way leads to some advantages of Cloud Computing, such as improved utilization and resource management, but not to all of the advantages we identified, such as high elasticity, pay-as-you-go billing, and economies of scale. As we say in the report, we also think that using cloud APIs in an internal data center will enable what we call Surge Computing: in times of heavy load, you outsource some tasks from an internal data center into a Cloud, thus mitigating the risk of under-provisioning.

Returning to the analogy we used in Above the Clouds, the hardware world has largely separated into semiconductor foundries like TSMC and fab-less chip design companies like NVIDIA. However, some larger companies do have internal fabs that they precisely match to the TSMC design rules so that they can do “Surge Chip Fabrication” at TSMC when chip demand exceeds what their internal capacity. Indeed, “Surge Chip Fab” is a significant fraction of TSMC’s business.

Just as the those in the hardware world do not consider companies that use Surge Chip Fab to be semiconductor foundries, for the two reasons above, we do not recommend including any private datacenter that imitates some characteristics of Public Clouds in Cloud Computing. Surge Computing is a more accurate label for such datacenters, even if it doesn’t have the same sizzle as Cloud Computing.

Although our restricted definition may limit which products and services are labeled Cloud Computing, by being precise we aim to prevent allergic reactions and thereby enable a more meaningful and constructive discussion of the current state of Cloud Computing and its future.