Introduction
Before moving into the cloud you need to make two specific decisions. The first is determining the service model on which you will host your application(s), for example, IaaS, PaaS, or SaaS. Each of these service models requires various levels of support and responsibilities once a system is deployed to the platform. To resolve the future challenges that you might encounter you need to understand the models carefully. Other than the service model, the second, you need to decide whether you want a Private or On-Premise cloud, or you want your application to be deployed on a Public Cloud.
Security and Cost are relevant things to consider for these deployment models discussed later in this chapter. We will see them later in this article.
Every service model offers you some kind of resource required to operate the most web-enabled systems imaginable.
Before diving into each of the service models, let's have a look at the layered structure of cloud computing.
I would like you to refer to the following picture as well:
Well depicted, right?
In the traditional IT infrastructure you get to manage all the components from the top to the bottom on your own and also, most importantly, you pay the cost for each of them in full. Here, in a so-called cloud what they offer is their infrastructure and allow you to manage and configure only the necessary components that lie in a service model.
Infrastructure as a Service (IaaS)
Infrastructure as a Service (IaaS), as the name suggests, provides you the computing infrastructure, physical or (quite often) virtual machines, and other resources like virtual-machine disk image library, block and file-based storage, firewalls, load balancers, IP addresses, virtual local area networks and so on. Infrastructure as a Service (IaaS) is a way of delivering Cloud Computing infrastructure as an on-demand service. Rather than purchasing servers, software, data center space, or network equipment, clients instead buy those resources as a fully outsourced service on demand. As you can see, in the IaaS service model the providers get to manage the network, storage, servers, virtualization, and operating system (only up to a level), and you get to manage the OS, middleware, runtime, data, and applications.
The following are the key features of an IaaS:
- Resources are distributed as a service
- Allows for dynamic scaling
- Has a variable cost, utility pricing model
- Generally includes multiple users on a single piece of hardware
Examples include:
- Windows Azure
- Amazon EC2
- Rackspace
Platform as a Service (PaaS)
Platform as a Service (PaaS) can be defined as a computing platform that allows the creation of web applications quickly and easily and without the complexity of buying and maintaining the software and infrastructure underneath it.
PaaS provides you computing platforms and that typically includes an operating system, programming language execution environment, database, web server and so on. PaaS is analogous to SaaS, except that rather than being software delivered over the web, it is a platform for the creation of software, delivered over the web. They offer you a platform (in other words IIS Server already configured for .Net Web Apps) where you can host your applications and then your web app becomes available to the clients who finally consume services.
The following are the key features of PaaS:
- Services to develop, test, deploy, host, and maintain applications in the same integrated development environment. All the varying services are necessary to fulfill the application development process.
- Web-based user interface creation tools help to create, modify, test, and deploy various UI scenarios.
- Multi-tenant architecture where multiple concurrent users utilize the same development application.
- Built-in scalability of deployed software including load balancing and failover.
- Integration with web services and databases via common standards.
- Support for development team collaboration. Some PaaS solutions include project planning and communication tools.
- Tools to handle billing and subscription management.
The following are examples:
- Google App Engine.
- Force.com
- AWS Beanstalk
- Heroku
Software as a Service (SaaS)
Any software deployed over the internet comes under the SaaS service model. With SaaS, a provider (for example Gmail / Office 365) licenses an application to customers either as a service on-demand, through a subscription, in a “pay-as-you-go” model, or (increasingly) at no charge when there is an opportunity to generate revenue from streams other than the user, such as from advertisement or user list sales.
In the SaaS model you are provided with access to application software often referred to as on-demand software. You don't need to worry about the installation, setup, and running of the application. The service provider will do that for you. You just need to pay and use it using some client.
Many forms of SaaS can be seen these days like DBaaS (DataBase as a service), BaaS (Backend as a Service), and so on.
The following are the key features of a SaaS:
- Web access to commercial software
- Software is managed from a central location
- Software delivered in a “one-to-many” model
- Users are not required to handle software upgrades and patches
- Application Programming Interfaces (APIs) allow for integration among various pieces of software.
The following are examples:
- Google Apps
- Office 365
- Email Applications (Gmail / Hotmail / Yahoo and so on)
- Finance Management Applications
- CRM (Customer Relationship Management) applications
The two forms of Cloud Services: Public and Private
Infrastructure that consists of Shared Resources, deployed on a self-service basis over the internet is considered to be a public cloud. These clouds offer the greatest level of efficiency in shared resources, however, they are also more vulnerable than private clouds.
Private clouds are those that are built exclusively for an individual enterprise. They allow the firm to host applications in the cloud while addressing concerns regarding data security and control that is often lacking in a public cloud environment. It is also known as an internal or enterprise cloud and resides on the company's intranet or hosted data center where all of your data is protected behind a firewall.
Another cloud type we have is Hybrid Cloud that has its own benefits. A hybrid cloud is a mixture of internal and external cloud services, a combination of a private cloud combined with the use of public cloud services. This type of cloud is most suitable when you want to keep the confidential data at your premises (private cloud) and consume the other services from a public cloud.
I hope you find this article useful.
(Image Courtesy: Various Internet Resources)