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.
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 |
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.
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.
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.
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