At the lowest level, IaaS offers the physical infrastructure (or virtualized physical
infrastructure) to tenants with the ability to pay for what they need in terms of
computing power. Instead of purchasing servers, software, and physical location,
a tenant of an IaaS offering can pay for these components as needed in a more
subscription-based fashion. Leading IaaS vendors like Amazon.com offer “pay per
CPU hour” pricing for Linux and Windows platforms. The servers are immediately
available and you can spin up dozens of servers in a matter of minutes.
At the highest level, SaaS, much like IaaS, offers solutions to the customer on
a per-usage model. The major difference is that SaaS offerings completely abstract
the physical and application layers from the end user or developer. For example,
Salesforce.com (widely consider the best example of a SaaS offering) provides its
own customizable user interface and proprietary programming language (Apex)
but doesn't expose to the end user the hardware or software layers that power the
application. SaaS offerings have an important characteristic when it comes to
application upgrades and maintenance: everything is centrally updated. So, when a
new feature is released or a patch or upgrade is provided, it's immediately available
to all customers.
In between IaaS and SaaS is the PaaS market. PaaS offers a bit more than IaaS,
without providing an actual end-user product. PaaS components are typically
building blocks or solution stacks that you can use to build your own applications.
This is where Google App Engine fits in your cloud-computing portfolio. App Engine
is a PaaS offering, currently supporting a Java and a Python runtime to build your
scalable web applications without the need for complex underlying hardware and
software layers. Google abstracts those layers and lets you concentrate fully on your
application. PaaS does have its own set of challenges, however. With PaaS offerings,
like App Engine and Force.com, you are restricted by a governor process or
application quotas. PaaS governors protect the shared layers of the multitenant
platform from being monopolized by one heavy application or runaway code.
Application quotas, which Google defines for App Engine applications, define the
daily-allotted amount of computing power, space, or bandwidth that any one
application is allowed to utilize. With App Engine you have the option to pay for
more power or space if needed. See Chapter 2 for more details on the quotas that
are defined and their limits.
Consider Figure 1-1 for a moment. Take a look at where the major players sit in
relation to the types of cloud offerings we've discussed so far as well as in comparison
to each other. You can quickly see that the major offerings seem to build on each
other. Amazon Web Services, in the bottom-left section, offers the least customization.
It simply removes your need to build out a physical infrastructure, leaving all the
management and support to your IT staff. Shifting to the right, you see that App Engine
offers just slightly more abstraction, now covering the platform and infrastructure.
Let's compare those two scenarios briefly.