Please note that the contents of this offline web site may be out of date. To access the most recent documentation visit the online version .
Note that links that point to online resources are green in color and will open in a new window.
We would love it if you could give us feedback about this material by filling this form (You have to be online to fill it)



What is Cloud Computing?

Learning objectives
  • Learn about "Cloud Computing"
  • Be aware of the primary cloud service levels
Prerequisites
  • General computing knowledge
  • General networking knowledge
Related

Wesley Chun, Jun 2012
Google Developer Relations

Introduction

In this lesson, we will cover the history of cloud computing, providing some background on how it came to be and the problems it aims to solve.

Cloud computing is generally broken down into three primary service levels. We will define these for you, show you examples of what they are, and also point to major cloud vendors with products that serve at those levels.

What is Cloud Computing?

There are plenty of definitions for "cloud computing" online, and for the most part, they generally point to the same thing: taking applications and running them on infrastructure other than your own. Companies or individuals who offload or effectively "outsource" their hardware and/or applications are running those apps "in the cloud."

However, this may not be the complete definition for you. As a developer, you need a more detailed definition. You may be outsourcing actual hardware, application development and hosting, or only wish to run online software from other providers. In other words, what you outsource to cloud vendors may and will be different from what other people or companies do... every situation is different, as are the cloud service levels.

Several reasons drive companies to investigate or adopt cloud computing services, with the primary reason being cost. Small companies can't afford a large amount of hardware nor the staff that goes along with it. Large companies may find the costs of maintaining and managing their own datacenters to be prohibitive, or perhaps they have made a significant investment only to discover that much of their resources idling away. Why not outsource to companies who specialize in running data centers and providing hardware/virtualization services and only pay for what you use? It's the classic "buy vs. rent" scenario.

If you choose to outsource everything (your apps and the hardware they run on), you're saving on the capital expenditures yet still responsible for everything above the hardware layer, meaning the operating system and any other services required to run your application(s).

The other extreme is to use existing software available online. Instead of hosting your company.s own e-mail or CRM (customer relationship management) software, you can choose to go with a third-party vendor. With services such as Salesforce or Gmail customized for your business (via a Google Apps domain), there's no need to even think of hardware.

Both of these are considered cloud computing, so depending on which type(s) of service you're looking for, you can already see that there are multiple service levels of cloud computing to choose from.

Cloud Computing Service Levels

In Figure 1 below, you can see how the analyst firm Gartner segregates cloud computing into three distinct classes of service.

Cloud service levels

Figure 1 : Cloud Computing Service Levels

These classes map directly from the different types of cloud service described at the end of the previous subsection. Let's explore these in detail here.

SaaS

Let's start at the highest level: software applications that are only available online fall into the "Software-as-a-Service" category, also known as "SaaS". The simplest example to understand is e-mail.

If you have an Internet provider, you'll need a desktop or mobile application to access that e-mail, else host it on your own servers. Not only would you have to run an inbound mail server using protocols such as IMAP (or POP for older systems), but you would also need to run an SMTP or outbound mail server. Then you'd have to configure your desktop or mobile e-mail application to connect to those servers, add appropriate levels of security, quota management, etc.

For personal e-mail, people typically select from a variety of free web-based e-mail servers such as Google's Gmail, Yahoo!Mail, or Microsoft's Hotmail, rather than setting up all of the above through their provider. Not only is it "free" (supported through advertising), but users are freed from any additional server maintenance. Another example of SaaS from Google includes their Apps product: office productivity software hosted and run by Google online.

Because these applications run (and store their data online), users no longer need to worry about managing, saving, and backing up their files. Of course, now it becomes Google's responsibility to ensure that your data is safe and secure . Other examples of SaaS include Salesforce, IBM's NetSuite, and online games.

The easiest way to think of SaaS is like this: it's software, but do you download and install it on your computer, or do you access it using a web browser or mobile app? If the latter, you've likely got a SaaS cloud application on your hands. Note that you don't have control of these applications, short of user-specific application settings. You can't fix bugs in the code or make changes to it. This is the responsibility of the vendor. To some, this lack of control is unacceptable.

IaaS

On the opposite end of the spectrum, we have "Infrastructure-as-a-Service," or "IaaS," where you outsource the hardware. In such cases, it's not just the computing power that you rent; it also includes power, cooling, and networking. Furthermore, it's more than likely that you'll need storage as well. Generally IaaS is this combination of compute and cloud storage.

When you choose to run your applications at this cloud service level, you're responsible for everything on the stack that is required to operate above it. By this, we mean necessities such as the operating system followed by additional (yet optional services) like database servers, web servers, load-balancing, monitoring, reporting, logging, middleware, etc. Furthermore, you're responsible for all hardware and software upgrades, patches, security fixes, and licensing, any of which can affect your application's software stack in a major way.

PaaS

In the middle, we have "Platform-as-a-Service," or "PaaS." At this service level, the vendor takes care of the underlying infrastructure for you, giving you only a platform with which to (build and) host your application(s). While this service level is the least known or discussed, some feel that this is the most powerful of the three. Gone are the hardware concerns of IaaS, yet with PaaS, you control the application — it's your code — unlike as the SaaS level where you're dependent on the cloud software vendor. The only thing you have to worry about is your application itself.

Systems like Google App Engine, Salesforce's Heroku and force.com, Microsoft Azure, and VMwares Cloud Foundry, all fall under the PaaS umbrella. Not only do these systems provision the hardware for you, but generally, you don't have to worry about those other necessary infrastructure components such as software upgrades, patches, and licensing. Interestingly, when you use PaaS platforms, the types of apps you create with them are SaaS applications.

Users of these apps don't control the code and have just outsourced them to the developer, a PaaS user. You can even generalize this by saying that a PaaS user is a SaaS developer, and to stretch this analogy further, an IaaS user could very well be a PaaS or SaaS developer. Most won't go through the trouble of creating a PaaS platform but will customize this code as part of their SaaS app. And if they reuse their code that interacts with IaaS hardware for other apps, then they've in fact, created a thin (and private) PaaS layer for themselves.

But how did these layers and cloud computing in general all get started?

Cloud Computing Background

While the advent of contemporary computer networking happened in the mid-1970s, no talk of anything remotely resembling a concept like "cloud computing" came about until about a decade later in 1984 when John Gage of Sun Microsystems coined the memorable slogan, "The network is the computer."

As prophetic as Sun was back in the day, hardware (primary compute and networking) was neither powerful nor commoditized enough to realize this vision at the time. Cloud computing was still at least a decade away. In the meantime, Sun's Unix-flavored operating system and servers became the "new iron," replacing mainframes that been around for several decades.

Sun's machines used open networking standards such as TCP/IP. This enabled programs running on one machine to talk to running programs on other machines. Such applications generally followed the client-server architecture model .

Around this time, Sir Tim Berners-Lee proposed the idea of sharing knowledge stored on multiple servers to be made available to the world via client computers. Documents would be stored containing hypertext, text with metadata containing location information as a reference for the item described via that text. Thus was born the World Wide Web and for a short while, the world was happy. However, people soon recognized they desired dynamic content... content that is driven by user input.

Soon thereafter, the limits of "web servers" were reached, as their capabilities were far outmatched by needs for more powerful, more custom, and more dynamic computations. This gave birth to the Common Gateway Interface (CGI). CGI launched external applications from the web server to process user input and compute or generate the HTML documents. The "web app" had arrived. We've now time-traveled from the mid-1980s to the early to mid-1990s.

CGI made dynamic content possible, which in turn brought about personalization. CGI's limits were also reached quickly when then gave way to similar but more scalable solutions. Fetching static documents paled in comparison to being able to generate HTML dynamically on-demand for users. It was possible to create online banking: you and everyone else could log into and view their own bank accounts; consumers could purchase products online, taking mail order to a whole new level. One of the most influential of online retailers has been and is still to this day, Amazon.

It's probably not a surprise that Amazon came into being soon after the creation of the CGI standard. From this point in the mid-1990s, they built one of the largest and most powerful network of computers by the early 2000s. They purchased enough computing resources to enable their business to withstand the network traffic demand of the holiday shopping season. According to their whitepaper : "By 2005, [we] had spent over a decade and hundreds of millions of dollars building and managing the large-scale, reliable, and efficient IT infrastructure that powered the operation of one of the world's largest online retail platforms."

The dilemma: what did all this equipment do during the summer? It sat idle. Why not "sublease" this equipment to try and recuperate costs? In mid-2006, they launched Amazon Web Services (AWS), selling their computing power to you. Other large well-known technology companies with computing resources joined the game (Google, Microsoft, Salesforce, VMware, etc.), which brings us to the present day.

Conclusion & Review

Q: Why does cloud computing exist? What are some of the reasons companies migrate to the cloud?

A: In summary, legacy machines, equipment, and networking have been a burden for companies to maintain and manage, and one of the more difficult problems is to make good on the investment. Cloud computing reduces the burden on corporate IT organizations and offers elasticity by letting firms outsource their computing needs and focus on their customers' solutions. Depending on the need, there are various levels of cloud computing service that companies can take advantage of.

Q: What are the three primary levels of cloud computing service and what are the main differences between them?

A: At the infrastructure level, all hardware resources such as compute, networking, power, and cooling are taken care of by the cloud vendor... IaaS customers are in full control over the virtual machines, storage, and everything else above in the stack. Users of PaaS services have an even greater luxury of only needing to be concerned with creating their customer applications. All of the hardware and mid-level services such as web and database servers are taken care of by the platform. Finally, SaaS applications live ubiquitously in the cloud, allowing their users access from desktops, laptops, or mobile devices.

Q: Name some cloud vendors, what their products are, and which cloud service level(s) they support.

A: We'll let you handle this one. :-)

Next Lesson : What is Google App Engine?

Authentication required

You need to be signed in with Google+ to do that.

Signing you in...

Google Developers needs your permission to do that.