You are on page 1of 8

Google App Engine

narainonnet@gmail.comSign out

1. Products

2. Google Developers Academy
Google Developers Academy
Feedback on this document
Ads
Android
Wallet
Cloud
o App Engine
Introduction to Google App Engine
What is Cloud Computing?
What is Google App Engine?
Getting Started
Using Python App Engine with Google Cloud SQL
App Engine 101 in Python
App Engine 101 in Python, Part II
Getting Started with the Python Search API
A Deeper Look at the Python Search API
Getting Started with Go, App Engine and Google+ API
Maps
TV
YouTube
What is Cloud Computing?
< PrevNext >
Learning objectives
Learn about "Cloud Computing"
Be aware of the primary cloud service levels
Prerequisites
General computing knowledge
General networking knowledge
Related
Mostly vendor-neutralvideo defining Cloud Computing
Cloud Wikipedia page
Google security whitepaper
Longer version of this lesson appears in Chapter 12 of Core Python
Applications Programming(2012: Prentice Hall)
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.

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?
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0
License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies.
Last updated April 3, 2014.



Explore
Products
Showcase
Events
Communities
Connect
Blog
Google+ Community
YouTube Channel
Report an Issue
Jobs
Programs
Groups
Experts
Startups
Women Techmakers
Top Products
Ads
Analytics
Android
Apps
Cast
Chrome
Cloud
Glass
Google+
Maps
Wallet
YouTube
Terms of Use Privacy Policy


English

English

You might also like