Thursday 2 May 2013

Cloud Computing Service Models

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