I remember the discussion with my last projects team members few days back, I asked this question to many techy guys "Do You Have Some Idea About Cloud...What is This Concept...Etc..Etc..????"
and found that most of the people think of cloud as ONLY ONE of the below mentioned categories and many are not aware about all three, people don't have complete idea about it, so this article is dedicated to all of them. :)
Clouds
platforms are mainly distinguished by the level of abstraction and level of
management of the virtual resources they provide, which are categorized into
three distinct classes of services (or service models).
Cloud Infrastructure-as-a-Service (or
IaaS): the capability offered to the customer is to provision
processing, storage, networks and other fundamental computing resources where the
customer is able to deploy and run arbitrary software, which can include
operating systems and applications. The customer does not manage, control or
own the underlying cloud infrastructure, but has control over the operating
systems, storage, deployed applications, and may have limited control over
select networking components (e.g., host firewall). Cloud IaaS providers
delegate control over the cloud infrastructure via management interfaces and
application programming interfaces (API) to enable resource provisioning and
configuration automation from external programs. These APIs are often
proprietary but tend to be standard under customer pressure. Cloud IaaS
providers manage very large amounts of computing and storage capacity. Through
virtualization, they are able to split, assign and dynamically resize these
resources to build ad-hoc systems as requested by customers.
Cloud Platform-as-a-Service (or PaaS): the
capability offered to the consumer is to deploy acquired or developed
applications onto a virtualized middleware infrastructure using programming
languages and tools supported by the provider. The consumer does not manage or
control the underlying cloud infrastructure (network, servers, operating
systems, or storage), but has control over the deployed applications and
possibly the application hosting environment configuration. In addition, cloud
PaaS can provide service continuity capabilities such as auto-scaling and
automatic failover that are transparent to the end-user.
Cloud Software-as-a-Service (or SaaS): the
capability offered to the consumer is to use the provider’s applications
running in a cloud infrastructure. The applications are accessible from various
client devices through a thin client interface such as a web browser (e.g. web based
email). The consumer does not manage or control the underlying cloud
infrastructure such as the network, servers, operating systems, storage, or
even individual application capabilities, with the possible exception of
limited user-specific application configuration settings. Cloud SaaS offers an
alternative to locally run applications.
It is
important to understand that each service model category serves a different
purpose and offers different classes of services for businesses and individuals
around the world. In addition, a SaaS cloud may use the north-bound services
PaaS cloud, and a PaaS cloud may use the north bound services of an IaaS.
An IaaS
cloud, such as Amazon EC2, is generally viewed at one end of the resource
abstraction spectrum because the virtual resources it provides look much like
physical hardware (i.e. raw CPU cycles, block-device storage, IP-level
networking) whereby a user can control the entire software stack in a virtual
server instance from the kernel and upwards. The virtual infrastructure management
interface in a typical IaaS cloud is limited to a few dozen application programming
interface (API) calls used to allocate and configure the virtualized hardware.
It is also the type of cloud that provides the greatest flexibility because
there is no a-priori limit to the kind of applications that can be hosted in
this infrastructure. But its low level of abstraction makes it inherently
difficult for users to get transparent scalability and failover service
capabilities. Customers must implement the machinery themselves or subcontract
the task to third-party value-added resellers (VAR).
Higher-level
managed services are offered by PaaS clouds, such as Google AppEngine, Force.com—the
salesforce business software development platform—and Microsoft's Azure. Google
AppEngine is a domain-specific platform targeted exclusively at web application
design. Google AppEngine provides impressive automatic scaling and
high-availability capabilities out-of the-box, but imposes on the application
developer a programming model and framework that enforces a clean separation
between a stateless computation tier and a stateful storage tier. Furthermore,
AppEngine applications are expected to be request response based, and are
severely restricted on the amount of CPU time they can use to serve requests.
Similarly
to Google AppEngine, Force.com is designed to support business applications
that run with the Salesforce.com database and nothing else. Contrarily to
Amazon EC2, Google AppEngineand Force.com do not seem suitable for
general-purpose computing.
As an
intermediate alternative, applications for Microsoft's Azure are written using
.NET libraries, and compile to the Common Language Runtime, a
language-independent managed environment for virtual machines. The system
supports general-purpose computing rather than a single category of
applications. Users get a choice of language but cannot control the underlying operating
system or runtime. Thus, Azure is an intermediate solution between application frameworks
like AppEngine or Force.com and virtual machine and storage environments like Amazon
EC2.
In
addition, it is argued in (Smith, Cearley et al. 2009) and (Armbrust et al.
2009) that the level of abstraction by which virtual resources can be used and
managed by the customer is an important differentiator that determines the
extent to which scalability and failover can be performed automatically by the
cloud infrastructure in a way that is independent from the application design. AppEngine,
Force.com and Azure each offer proprietary features or large and complex APIs
such as Azure's .NET libraries that have no free implementation. Therefore,
applications developed for AppEngine, Force.com and even Azure cannot be
migrated easily from one cloud to another, nor can they be re-hosted to
self-hosted servers. Thus, choosing a PaaS solution today could be a lockin
decision—due to the proprietary nature of the programming model—until standards
are set.
No comments:
Post a Comment
Please Share Your Views