Advertisment

Choosing the Right Cloud Platform

author-image
PCQ Bureau
New Update

The concept of Cloud Computing is rapidly becoming popular amongst

enterprises that realize the benefits of shared infrastructure, lowered costs

and minimal management overheads. Though, Cloud services are being offered in

various forms, you can have your own “private cloud” either hosted off-premise

with a service provider or have it within you own. Most people think that Cloud

is just virtualization that has been extended to be off-premise. The main

difference between Cloud and virtualization is that the objective of a Cloud is

to automate provisioning of resources while the basis of virtualization is

resource utilization and optimization. Most service providers use virtualization

as basis of forming a cloud infrastructure; but it is the enablement of

auto-provisioning feature that brings in the true essence of a Cloud and with it

the concepts of SaaS, PaaS and IaaS.

Advertisment

Cloud Computing environs



Google, Microsoft and Amazon; all provide cloud computing environments from

where you can run your organizational applications onto the cloud. But, before

we talk about the various cloud computing platforms available, let's first

describe the laundry of acronyms for different types of cloud computing

platforms.

SaaS — Software as a Service : The basic idea behind Software as a

Service is simple. It's based on the concept of renting an entire finished

application from a service provider rather than buying, installing and running

that software. The application exists on the cloud and can be consumed from any

web browser. The CRM application suite from Salesforce.com falls under this

terminology.

Direct Hit!

Applies To: CIOs, network admins



USP: Learn about the different cloud computing platforms you
can choose for your organization



Primary Link: NA


Search Engine Keywords: Cloud, Iaas,  PaaS

Advertisment

PaaS — Platform as a Service: PaaS is all about providing a platform

where one can get the compute power, storage and networking infrastructure as a

service via public Internet upon which applications can be developed and

executed. PaaS environments offer runtime environment for compiled application

code, which means just the application code requires to be uploaded and it will

be compiled, configured and started from within the cloud environment. A PaaS

environment caters more to a developer than the infrastructure architect. PaaS

vendors may provide an Integrated Development Environment (IDE) that allows

developers for offline development of the application by emulating the cloud

runtime environment and also provide with tools that can package up the

application and deploy that on the PaaS cloud environment from within the IDE.

Microsoft Azure and Google App Engine exist in this space.

IaaS — Infrastructure as a Service: The intention here is to offer

computing and storage capability on demand. Though, the difference between this

and above two is that IaaS vendors deploy virtualization technologies to provide

the compute power. In case of PaaS you have access to an environment upon which

applications could be deployed. But with IaaS you create a virtual machine which

could have your application and all other things required by the application

rather than being restricted to a certain development environment. You can have

your choice of an OS image, development environment and host it on the IaaS

vendor infrastructure.

What to move over cloud?



Security of application and data plus adherence to compliance seems to be

the leading hindrance in adoption of cloud computing platform. Other points that

should be kept in mind before considering cloud services include seamless

integration with current setup, and control over data movement and monitoring as

data and application of your organization is being hosted on the service

provider's data center. Therefore the decision about what should be moved to

cloud is critical. Let us try to explain this with help of an example. If a bank

decides to leverage cloud capabilities then it is advisable not to move core

banking application over public cloud and even if private cloud is used proper

security measures should be taken. Instead they should move only those

applications on the cloud that need a lot of computing power in short bursts of

time for analysis. Organizations just need to provision extra computing power

from cloud without worrying about management.

Advertisment

Be it Microsoft Azure, Google App Engine or Amazon Elastic Cloud, all these

cloud computing systems have been designed to provide facilities required to

support the complete life cycle of building and delivering software applications

and making them available over the Internet. However, before any organization

would like to invest on transferring their existing business application or to

build new ones onto the cloud, they would be more interested in knowing which

platform would be feasible and suit their needs..

Microsoft's Azure



Among the three cloud service platforms we shall touch upon, this is

directly comparable to Google's App Engine. On same lines as App Engine, Azure

also provides environment for building applications for the cloud (PaaS) plus

providing finished applications as service over the cloud (SaaS). From

development point of view, building applications in Azure environment would be

much easier as most of the IDEs used by developers are now capable of developing

and testing applications for cloud. One more point worth mentioning is that

Azure when compared with App Engine supports more languages and on top of it

popular relational database support is also present.

SQL Azure is the relational database service that can be used and is similar

to SQL, plus there is no need to install and manage it on-premises,  One can use

both existing SQL and SQL Azure for their business. Azure AppFabric is an

interesting feature provided by Microsoft in Azure platform. This feature

enables developers to connect applications and services in the cloud or

on-premises. This includes applications running on Windows Azure, Windows Server

and a number of other platforms including Java, Ruby, PHP and others. It

provides a Service Bus for connectivity across network and organizational

boundaries, and Access Control for controlled access. Microsoft is marketing

Azure as an OS for cloud that abstracts all the complexity and provides a simple

interface to the user. Beyond providing cloud services, Microsoft is also

planning to use data residing on cloud for business usage.

Advertisment

Google App Engine



Google App Engine is the cloud computing platform for developing and hosting

web applications on Google's data centers. It is free up to a certain level of

used resources. Fees are charged for additional storage, bandwidth, or CPU

cycles required by the application. The supported programming environments that

Google currently offers for App Engine are Python and Java, but there's no

roadmap for future language support. For security purposes Google has ripped the

file write features out of Python and Java, and on Java environment the

applications are restricted from spawning new threads. App Engine is still in

beta stage and not as mature as Microsoft Azure. Therefore, with App Engine

you'll get limitations on CPU and storage. You have a file size limit of just

1MB; a serious drawback if your web application would contain audio or video

files.

Unlike Azure, you are restricted to use Google's database, which is different

from SQL Server offered by Azure. App Engine does not offer a relational

database but a datastore, and for developers switching from RDBMS to datastore

would require a paradigm shift while modelling their data.

App Engine is apt for those kind of applications that do not require write

access onto the file system of hosted platform, as you get just read-only access

with App Engine. So, from an organization's point of view, you can use App

Engine as an extension to your existing business application to provide services

on lines of web services, ie access information from the main application's

database.

Advertisment

Amazon EC2



Of all three cloud services providers mentioned in this article Amazon is

the only one that provides true IaaS, this inference is based on capability of

Amazon's  Elastic Compute Cloud or EC2 to allow users to use web service

interfaces to launch instances with a variety of operating systems. EC2 also

enables users to load these OSes with custom application environment plus gives

them ability to manage network's access permissions and run image using as many

or few systems as desired. A typical user of this service either chooses a

pre-configured template image or can create own  image (Amazon machine image)

with all the necessary data, application and settings. EC2 allows users to

select a configuration of memory, CPU, instance storage, and the boot partition

size that is optimal for choosing an operating system and application. Here the

choice of operating systems includes number of Linux distributions, Microsoft

Windows Server and OpenSolaris. Security is provided using customizable firewall

that controls network access between instances and if data is confidential then

there is an option of the Amazon Virtual Private Cloud. One more feature of EC2

is Amazon Elastic Block Store (EBS) that offers persistent storage for Amazon

EC2 instances.

Amazon EC2 also seamlessly supports number of other Amazon's web services

like Simple Storage Service (Amazon S3),  SimpleDB, and Amazon Simple Queue

Service (Amazon SQS). Here S3 is a simple web interface through which any amount

of data can be stored and retrieved anywhere from web. In S3, data is stored in

form of objects and each of these object is stored in a bucket with a unique ID.

Each bucket is stored in a particular region and does not leave assigned region

without release.  SimpleDB is a non-relational database while SQS is a hosted

queue for storing messages as they travel between computers. By using Amazon SQS,

developers can simply move data between distributed components of their

applications that perform different tasks, without losing messages or requiring

each component to be always available.

Rahul Sah, Sandeep Koul and Amrita Premrajan

Advertisment