Professional Documents
Culture Documents
C Jana01
C Jana01
Janakiram MSV
www.GetCloudReady.com
1
1/1/2012
I am also the chief editor at CloudStory.in where I blog about the latest trends in Cloud
Computing. As a passionate speaker, I have chaired the Cloud Computing track at premier
events in India. Having spoken at over 50 events in 2011, I have been consistently rated as
the top speaker at premier technical events.
The valuable time and work done at Amazon as the Web Services Evangelist and Technology
Architect Cloud at Microsoft Corporation has offered me the breadth and depth of
knowledge and expertise in the Cloud Computing domain. Prior to this, for about 10 years at
Microsoft Corporation, I have been involved in selling, marketing and evangelizing the
Microsoft Application Platform and Tools.
Founded on a strong belief that technology needs to create a lasting impact on businesses,
people and society at large; I relentlessly strive to deliver value to my customers and the
community.
My Coordinates
Principal Consultant, Janakiram & Associates http://www.janakiramm.net
Cloud Specialist,
Specialist , Get Cloud Ready http://www.GetCloudReady.com
Chief Editor,
Editor , CloudStory.in http://www.CloudStory.in
Chapter 1
Defining the Cloud
Evolution of ISP
There are multiple factors that led to the evolution of Cloud Computing. One
of the key factors is the way Internet Service Providers (ISP) matured over a
period of time. I am borrowing this analogy from Forrester Research.
Evolution of ISP
this, companies could host their servers running custom, Line of Business
(LoB) applications that could be accessed over the public internet by its
employees, trading partners and customers. ISP 3.0 was offering
applications on subscription resulting in the Application Service Provider
(ASP) model. The latest trend of Software as a Service is a mature ASP
model. The next logical step for ISPs would be to embrace the Cloud.
Programmable Web
Virtualization
Virtualization is the most discussed term among CIOs and IT decision
makers. Through Virtualization, the data center infrastructure can be
consolidated from hundreds of servers to just tens of servers. All the
physical server roles like Web Servers, Database Servers and Messaging
Servers run as virtualized instances. This results in lower Total Cost of
2012 Janakiram & Associates
Ownership (TCO) and brings substantial savings on the power bills and
reduced cost of cooling equipment.
Virtualized Infrastructure
Eventually cloud became the logical connector between the local and remote
resources on the Internet.
Most of the developers get confused when they encounter the term Cloud
Computing. According to them, their Web Services are already hosted on the
Cloud and that can be potentially called as Cloud Services. While there is
some truth in this argument, it is a not very accurate way of describing Cloud
Computing. Lets look at Cloud Computing through the eyes of a developer.
Cloud OS
Visualize a scenario where the hardware and the Operating System (OS) are
exposed as a Web Service over the public Internet. Based on the principles of
Web Services, we could send a request to this service along with a few
parameters. Since the OS is expected to act as an interface to the CPU and
the devices, we can potentially invoke a service that accepts a job that will
be processed by the OS and the underlying hardware. Technically, this Web
Service has just turned the OS + H/W combination into a Service. We can
start consuming this service by submitting CPU intensive tasks to this new
breed of Web Service. What do you call an OS that is exposed on the web as a
service? May be a Cloud OS? We will answer this in the coming sections.
Cloud FX
Developers always develop and deploy their applications on the application
development platforms. Some of the most popular application development
platforms are .NET and Java. In the last scenario, we have seen how the OS +
H/W combination is offered as a service. Now, imagine a scenario where the
application development platform is offered to you as a service. Through
this, you will be able to develop and test your applications on a low end,
inexpensive notebook PC but will able to submit the code to run on the most
powerful hardware infrastructure. It is the same programming language,
SDK and the runtime that runs on your development environment. If the
2012 Janakiram & Associates
hardware, OS, the language runtime and the SDK are offered to you as a
service, what would you call this? A Cloud Platform or may be Cloud FX? We
will address this in the next section.
Web Application
App lication as a Service
Infrastructure as a Service
In the previous section we discussed the Cloud OS. All that the Cloud OS
offers is the infrastructure services. You may choose to use REST API to
manage this OS or use SSH or Remote Desktop console. Technically, when
you are able to delegate a program to execute on a remote OS running on the
Web, you are leveraging Infrastructure as a Service (IaaS). This is different
from classic web hosting. Web hosting only hosts web pages and cannot
execute code that needs low level access to the OS API. Web hosting cannot
dynamically scale on demand. IaaS enables you to run your computing task
on virtually unlimited number of machines. Remember that through IaaS,
you have just moved a server running in your backyard into the Cloud. You
are still responsible for managing, patching, securing and the health of the
remote servers. Amazon EC2, Rackspace, IBM SmartCloud and OpenStack
are examples of commercial IaaS offering.
Platform as a Service
Platform as a Service or PaaS goes one level above the Cloud OS. Through
this, developers can leverage a scalable platform to run their applications.
The advantage of PaaS is that the developers need not worry about installing,
maintaining, securing and patching the server. The PaaS provider takes the
responsibility of the infrastructure and exposes the platform alone as a
service. Through this, the developers can achieve higher level of scalability,
reliability and availability of their applications. Microsoft Windows Azure,
Google App Engine, Force.com, Heroku, Engine Yard and Cloud Foundry are
some of the examples of PaaS.
Software as a Service
Software as a Service (SaaS) is a silent revolution in the world of traditional
software products. With the availability of tablets and inexpensive netbooks
combined with abundant bandwidth, most of the applications are moving to
the Cloud to be offered as services. Consumers can now use inexpensive
devices that are capable of connecting to the web to get their work done. This
reduces the upfront investment in software and brings the Pay-as-you-go
model. Google Apps, Salesforce.com and Microsoft Office365 are examples
of SaaS.
10
11
Architects should start thinking about the patterns that will make the
applications seamlessly scale on-the-fly across hundreds of servers.
Consumers
Consumers will experience the Cloud through a variety of applications that
they will use in their day-to-day life. If you have ever used Google Docs,
Dropbox or Microsoft Live Mesh, you have already leveraging the Cloud.
Consumers will subscribe to Software as a Service offerings.
12
Chapter 2
The Tenets of the Cloud
The 4 Key Tenets
I want to quickly recap the definition of Cloud Computing. It is all about
outsourcing your infrastructure and applications to run on a remote
resource. The remote resource phrase in the definition can be misleading
and creates an illusion that running your web app on a server hosted abroad
is Cloud Computing. So, what qualifies the remote resource to be called as
the Cloud?
Here are the 4 key capabilities that the Cloud Computing offers:
Elasticity
This is the most important attribute of the Cloud. You might start running
your application on just a single server. But in no time, Cloud Computing
enables you to scale your application to run on 100s of servers. Once the
traffic and usage of your application decreases, you can scale down to
10s of servers. All this happens almost instantly and the best thing is
your application and your customers dont even realize that. This dynamic
capability of scaling up and scaling down is called Elasticity. Elasticity
brings an illusion of Infinity. Though nothing is infinite in this world, your
application can get any number of resources as it demands. This is the
biggest promise of the Cloud. Now, think of web hosting. When you want
to add another server to your web application, your hoster has to
manually provision that for you. Adding additional servers and
configuring the network topology introduces additional time lag that your
business cannot afford. Most of the Cloud Computing vendors offer an
13
Self Service
When you are able to enjoy the capability of scaling up and scaling down
and only pay for what you use, you never want to wait for someone in the
datacenter to add an additional server to your application. Cloud can
2012 Janakiram & Associates
14
deliver its promise only when there is self service. Through this, you can
control the resources all by yourself without an intermediary. When you
add a new CPU core, a server instance or add extra storage, you do it by
yourself by using the Console offered by the Cloud provider. This results
in reduction in IT support and maintenance. Today most of the
organizations have dedicated IT teams to provision a new machine,
storage, collaboration portal and mailboxes as a part of on-boarding the
new employees. Through Self Service, a fairly non-technical person can
achieve these tasks and you dont need certified system administrators to
do this. For example, when you sign up with Google Apps, it is very simple
and intuitive to configure the mailboxes for the employees. With more
and more applications moving the Cloud, Self Service becomes the
preferred way of configuring and managing the IT infrastructure.
15
Programmability
This is the critical attribute of the Cloud. The Cloud makes the developers
extremely important. Developers are familiar with the concepts of
multithreading where they spawn new threads to achieve scalability and
the responsiveness of the application. They incorporate logic to create
additional threads on demand. The programmability aspect of the Cloud
adds a new dimension to the development. Developers can now create
additional machines and add it to the applications on demand. They can
treat the entire data center, servers and machines as an object model
that be programmed. They can now do a For-Each loop on every server
instance and decide what do with each instance. Amazon Web Services
have the most mature API for programmatically controlling the Cloud
based resources. Windows Azure supports the management API that lets
developers programmatically deploy and manage Azure applications. By
leveraging these APIs, developers are building applications to manage
the infrastructure and some of these frontends run on iPad and Android
devices. Now, imagine tapping on your mobile phone to add a dozen
16
17
So, lets summarize what we just discussed. Cloud Computing has 4 key
tenets
1) Elasticity, 2) Pay-By-Use, 3) Self Service, and 4) Programmability.
Having understood the key attributes of the Cloud, you might start wondering
how you can bring these capabilities to your data center in the enterprise.
The reality is that these capabilities can be applied to your data center and
officially that is called as the Private Cloud. It is time for us to discuss
2012 Janakiram & Associates
18
19
Public Cloud
Private Cloud
Simply put, Private Clouds are normal data centers within an enterprise with
all the 4 attributes of the Cloud Elasticity, Self Service, Pay-By-Use and
Programmability. By setting up a Private Cloud, enterprises can consolidate
their IT infrastructure. They will need fewer IT staff to manage the data
center. They will also realize reduced power bills because of the low
electricity consumption and lesser cooling equipment needs. Private Cloud
empowers employees within an organization through Self Service of their IT
needs. It becomes easy to provision new machines and quickly assign them
to project teams. Private Cloud borrows some of the best practices of Public
Cloud but limited to an organizational boundary. Private Cloud can be setup
using a variety of offerings from vmWare, Microsoft, IBM, SUN and others.
There are also some of the Open Source implementations like Eucalyptus
and OpenStack. We will discuss more of Private Cloud in the coming
episodes.
20
Private Cloud
Hybrid Cloud
There are scenarios where you need a combination of Private Cloud and
Public Cloud. Due to the regulations and compliance issues in few countries,
sensitive data like citizen information, patient medical history, and financial
transactions cannot be stored in servers that physically not located within
the political boundaries of a country. In some scenarios, the enterprise
customers want to get best of the both worlds by logically connecting their
Private Cloud and the Public Cloud. Through this, they can offer seamless
scalability by moving some of the on-premise and Private Cloud based
applications to the Public Cloud. Security plays a critical role in connecting
the Private Cloud to the Public Cloud. Realizing its importance, Amazon Web
Services offers Virtual Private Cloud (VPC) that securely bridges Private
Cloud and Amazon Web Services. It is a way of extending your infrastructure
beyond the organizational boundary and the firewall in a secure way.
Windows Azure AppFabric brings the concept of Hybrid Cloud to Microsofts
enterprise customers.
21
Hybrid Cloud
Community Cloud
Community Cloud is implemented when a set of businesses have a similar
requirement and share the same context. This would be made available to a
set of select organizations. For example, the Federal government in US may
decide to setup a government specific Community Cloud that can leveraged
by all the states. Through this, individual local bodies like state governments
will be freed from investing, maintaining and managing their local data
centers. Similarly, the Reserve Bank of India (RBI) or Unique Identification
Authority of India (UIDAI) may setup a Community Cloud for all the financial
institutions that share common goals and requirements. So, a Community
Cloud is a sort of Private Cloud but goes beyond just one organization.
Community Cloud
2012 Janakiram & Associates
22
23
Chapter 3
The Anatomy of the Cloud
Introduction to Virtualization
Virtualization is abstracting the hardware to run virtual instances of multiple
guest operating systems on a single host operating system. You can see
Virtualization in action by installing Microsoft Virtual PC, VMware Player or
Oracle VirtualBox. These are desktop virtualization solutions that let you
install and run an OS within the host OS. The virtualized guest OS images are
called Virtual Machines. The benefit of virtualization is realized more on the
servers than on the desktops.
Server Virtualization
There are many reasons for running Virtualization on the servers running in
a traditional data center. Here are a few:
Mean Time To Restore
It is far more flexible and faster to restore a failed web server, app server or
a database server that is running as a virtualized instance. Since these
instances are physical files on the hard disk for the host operating system,
just copying over a replica of the failed server image is faster than restoring
a failed physical server. Administrators can maintain multiple versions of the
24
VMs that come handy during the restoration. The best thing about this is that
the whole copy and restore process can be automated as a part of disaster
recovery plan.
Maximizing the server utilization
It is very common that certain servers in the data center are less utilized
while some servers are maxed out. Through virtualization, the load can be
evenly spread across all the servers. There are management software
offerings that will automatically move VMs to idle servers to dynamically
manage the load across the data center.
Reduction in maintenance cost
Virtualization has a direct impact on the bottom line. First, by consolidating
the data center to run on fewer but powerful servers, there is a significant
cost reduction. The power consumed by the data center and the maintenance
cost of the cooling equipment comes down drastically. The other problem
that virtualization solves is the migration of servers. When the hardware
reaches the end of the lifecycle, the physical servers need to be replaced.
Backing up and restoring the data and the installation of software on a
production server is very complex and expensive. Virtualization makes this
process extremely simple and cost effective. The physical servers will be
replaced and the VMs just get restarted without any change in the
configuration. This has a significant impact on the IT budgets.
Efficient management
All major virtualization software have a centralized console to manage,
maintain, track and monitor the health of physical servers and the VMs
running on these servers. Because of the simplicity and the dynamic
capabilities, IT administrators will spend less time in managing the
infrastructure. This results in better management and cost savings for the
company.
25
Ap
p
Ap
p
Ap
p
Ap
p
Ap
p
Ap
p
Operating System
Hardware
VM
VM
VM
VM
VM
VM
Hypervisor
Hardware
A Hypervisor can potentially replace the OS and can even boot directly from a
VM. This is called bare metal approach to virtualization. These Hypervisors
have low footprint of few megabytes (vmWare ESXi is just 32MB in size!) and
have an embedded OS with them. Hypervisors are assisted by the hardware
virtualization features built into the latest Intel and AMD CPUs. This
2012 Janakiram & Associates
26
combination of hardware and Hypervisor turns the server into a lean and
mean machine to host multiple VMs. The VM that is used by the Hypervisor to
boot as a host is called a para-virtualized VM. This concept makes
virtualization absolutely powerful. Imagine a server booting in few seconds
and the required para-virtualized (host) VM gets copied over a gigabit
Ethernet to run multiple guest VMs. This enables the datacenter to be very
dynamic and agile. The Hypervisor can be controlled by a central console and
can be instructed about the host VM to boot and the guest VMs to be run on it.
App
App
App
VM
App
VM
App
App
VM
Paravirtualized VM
Hypervisor
Hardware
27
This product is another bare metal Hypervisor from the virtualization leader,
VMware. This is one of the best Hypervisors with just 32MB footprint. ESXi
ships with Direct Console User Interface (DCUI) that provides basic UI
required for administering and managing the Hypervisor. Through its
standard Common Information Model (CIM) system, it also exposes the APIs
to control the infrastructure.
Microsoft HyperHyper -V Server
This is a free Hypervisor from Microsoft based on the same Hypervisor that
ships with Microsoft Windows Server Hyper-V edition. This is best suited for
Virtual Desktop Infrastructure (VDI) because of its compatibility with
Windows Vista and Windows 7. Hyper-V does not have any local GUI but can
be managed from System Center Virtual Machine Manager (SCVMM).
28
29
Data Center
Though you do not have a direct choice in this, your app will be deployed at a
data center physically located at a place that you have chosen. These data
centers typically run thousands of powerful servers that offer a lot of storage
and computing power.
30
your app. Servers are treated as a commodity resource to host the VMs.
There is no affinity between a VM and a physical server. Each server in the
data center is optimally utilized at any given point.
Each server
serve r runs the Hypervisor and the VM(s)
Virtual Machine
This is the layer that you will directly interact with. In Platform as a Service
(PaaS), you may not realize that you are dealing with a VM but in reality most
of the Cloud implementations will host your code or app on a VM. VMs are
essential to respect the 4 tenets of the Cloud. Your application runs on a VM
that is managed by the Hypervisor running across all the servers. These VMs
are moved across servers based on the server utilization. There is no
guarantee that the VM that you launch will run on the same physical server.
There will be a load balancer which will ensure that your applications are
scalable by exploiting the power of all the VMs associated with your
application.
31
32
Chapter 4
Introducing Amazon Web Services
Overview of Amazon Web Services
Amazon Web Services is one of the early and also the most successful
implementations of the Public Cloud. Many well-known online properties
leverage AWS. Amazon initially started offering a Cloud based Message
Queuing service called Amazon Simple Queue Service or SQS. They
eventually added services like Mechanical Turk, Simple Storage Service (S3),
Elastic Compute Cloud (EC2), A CDN service called CloudFront, a flexible and
distributed database service called SimpleDB. In the last few years the
number of services offered by AWS has grown significantly.
33
Lets take a closer look at some of the key service offerings from Amazon
Web Services.
34
Virtual Machine images. Each object can be 5TB in size while the metadata
can be up to 2KB. All the objects can be accessed using simple REST or SOAP
calls. This makes S3 an ideal storage solution to centrally store and retrieve
data across multiple clients. Some tools let you treat S3 a virtual file system
to provide persistence storage capabilities for backup and archiving
scenarios.
Amazon CloudFront
When your web application is targeting the global users, it makes sense to
serve the static content through a server that is closer to the user. One of the
solutions based on this principle is called Content Delivery Network (CDN).
But this infrastructure of geographically spread servers to serve static
content can be very expensive. CloudFront is CDN as a service. Amazon is
leveraging its data center presence across the globe by serving content
through these edge locations. CloudFront works in conjunction with S3 by
replicating the buckets across multiple edge servers. Amazon charges you
only for the data that is served through CloudFront and there is no
requirement for upfront payment.
Amazon SimpleDB
35
AWS Scenarios
Scalable Web Application
36
If you are an aspiring entrepreneur and want to go-live with your app without
an upfront investment, Amazon is the place to go. By running your web app
on Amazon, you can dynamically scale you application on demand and only
pay for what you use. This can be the best playground for you to determine
the server capacity needs and asses the peak traffic patterns before the
commercial launch of your web app.
Data Archival
Data that is not very frequently accessed but may be required due to data
retention policies can be easily archived on Amazon S3. By building a simple,
searchable frontend, this data can be searched and retrieved on-demand.
Moving the data to the Cloud will ensure that is available from anywhere and
anytime.
37
pay only for what they used. This will eliminate the expensive proposition of
investing in the infrastructure.
38
Chapter 5
Introduction to Microsoft
Windows Azure
Overview of Windows Azure Platform
Microsoft Windows Azure Platform is a Platform as a Service offering from
Microsoft. It was announced in 2009 and became available in 2010. Since
then Microsoft has been constantly improving the platform by adding new
features.
integration,
virtual
networking
and
business
intelligence
capabilities.
39
I will first explain each of the components of Windows Azure Platform and
then walk you through the scenarios for deploying applications on this
platform.
Windows Azure
Windows Azure is the heart & soul of the Azure Platform. It is the OS that
runs on each and every server running in the data centers across multiple
geographic locations. It is interesting to note that Windows Azure OS is not
available as a retail OS. It is a homegrown version exclusively designed to
power Microsofts Cloud infrastructure. Windows Azure abstracts the
underlying hardware and brings an illusion that it is just one instance of OS.
Because this OS runs across multiple physical servers, there is a layer on
the top that coordinates the execution of processes. This layer is called the
Fabric. In between the Fabric and the Windows Azure OS, there are Virtual
Machines (VM) that actually run the code and the applications. As a
developer, you will only see two services at the top of this stack. They are 1)
Compute and, 2) Storage.
Compute
You interact with the Compute service when you deploy your applications on
Windows Azure. Applications are expected to run within one of the three
roles called Web Role, Worker Role and VM Role. Web Role is meant to host
40
typical ASP.NET web applications or any other CGI web applications. Worker
Role is to host long running processes that do not have any UI. Think of the
Web Role as an IIS container and the Worker Role as the Windows Services
container. Web Role and Worker Role can talk to each other in multiple
ways. The Web Role can also host WCF Services that expose a HTTP
endpoint. The code within Worker Role will run independent of the Web Role.
Through the Worker Role, you can port either .NET applications or native
COM applications to Windows Azure. Through Worker Role, Windows Azure
offers support for non-MS environments like PHP, Java and Node.js. VM
Role enables running applications within a custom Windows Server 2008 R2
image. This will enable enterprises to easily port applications that have
dependencies or 3rd party components and legacy software.
Storage
When you run an application, you definitely need storage to either store the
simple configuration data or more complex binary data. Windows Azure
Storage comes in three flavors. 1) Blobs, 2) Tables and, 3) Queues.
Blobs can store large binary objects like media files, documents and even
serialized objects. Table offers flexible name/value based storage. Finally,
Queues are used to deliver reliable messages between applications. Queues
are the best mechanism to communicate between Web Role and Worker
Role. The data stored in Azure Storage can be accessed through HTTP and
REST calls.
Service Bus
This service enables seamless integration of services that run within an
organization behind a firewall with those services that are hosted on the
Cloud. It forms a secure bridge between the legacy applications and the
Cloud services. Service Bus provides secure connectivity between on-
41
Caching
Caching provides an in-memory caching service for applications hosted on
Windows Azure. This avoids the disk I/O and enables applications to quickly
fetch data from a high-speed cache. Cache can store multiple types of data
including XML, Binary, Rows or Serialized CLR Objects. Web applications that
need to access read-only frequently can access the cache for better
performance. ASP.NET developers can move the session to Cache to avoid
single-point-of failure.
SQL Azure
SQL Azure is Microsoft SQL Server on the Cloud. Unlike Azure Storage, which
is meant for unstructured data, SQL Azure is a full-blown relational database
engine. It is based on the same DB engine of MS SQL Server and can be
42
43
44
Chapter 6
Introducing Google App Engine
Google App Engine is a platform to deploy and run web applications on
Googles infrastructure. It comes with a dynamic web server with full
support for common web technologies. It offers a transactional data store for
persisting data. Developers can integrate their web application with Google
Accounts through the APIs. The biggest advantage of running web
applications on GAE is the scalability that it offers. Your web application will
be as scalable as some of the popular Google services like search.
Google App Engine currently supports Python, Java and a brand new
language from Google called Go. Java developers will be able to deploy and
run JSPs and Servlets while Python developers can use standard library.
Since GAE runs in a sandbox, not all operations are possible. For example,
opening and listening on sockets is disabled. The applications running on
GAE live in a sandbox that provides multi-tenancy and isolation across
applications.
45
Java Runtime
GAE is based on Java 6 VM and Servlet 2.5 Container. The datastore can be
accessed through the JDO/JPA API. It supports JSR 107 for MemCache API.
Mail can be accessed through javax.mail API. Javax.net.URLConnection
provides access to URLFetch service. Apart from core Java language, other
dynamic languages based on Java like JRuby and Scala.
Python Runtime
GAE comes with a rich set of API and tools for developing web applications
based on Python. It supports Python 2.5.2 and Python 3 is being considered
for the future releases. You can also take advantage of a wide variety of
mature libraries and frameworks for Python web application development,
such as Django. The Python environment provides rich Python APIs for the
datastore, Google Accounts, URL fetch, and email services. App Engine also
provides a simple Python web application framework called webapp to make
it easy to start building applications.
Datastore
App Engine comes with a very powerful data storage that can scale
dynamically. It also features a query engine and support for transactions.
The datastore is different from traditional relational databases. The objects
stored in datastore are called Entities which are schemaless. These
entities have a set of properties that can be queried using a SQL like
46
User Authentication
One of the advantages of using GAE is its integration with Google Accounts.
This empowers the developers to leverage Googles secure authentication
engine for their custom applications. While a user is signed in to the
application, the app can access the user's email address, as well as a unique
user ID. The app can also detect whether the current user is an
administrator, making it easy to implement admin-only areas of the app.
URL Fetch
This service will fetch external web pages using the high bandwidth that
many other Google applications use.
Mail
This will enable developers to programmatically send email messages from
custom web applications.
MemCache
The Memcache service provides applications with a high performance inmemory key-value cache that is accessible by multiple instances of the
application. Memcache is useful for data that does not need the persistence
and transactional features of the datastore, such as temporary data or data
copied from the datastore to the cache for high speed access.
Image Manipulation
Through this service, developers can manipulate images. With this API, you
can resize, crop, rotate and flip images in JPEG and PNG formats.
47
Scheduled Tasks
Scheduled Tasks are also called cron jobs. Other than running interactive
web applications, GAE can also schedule tasks that can be invoked at a
specific time.
To get started on Google App Engine, download the Eclipse plug-in and the
SDK.
The SDK emulates the GAE environment locally and enables you to design,
develop and test applications on your machine before finally deploying on
GAE.
48
Chapter 7
Introducing OpenStack
In July 2010, Rackspace, one of the IaaS players has partnered with NASA to
launch an open source cloud project called OpenStack. The key objective of
OpenStack is to create a unified platform that powers both the Private Cloud
and the Public Cloud. This will make it easy to move workloads seamlessly
across the Private Cloud and the Public Cloud. Enterprises can deploy
OpenStack within their data center and service providers can leverage it to
set up Public Cloud. Though another open source project called Eucalyptus
was started with the same mission, it did not garner much attention as
OpenStack did. OpenStack has the credibility of NASA and the track record
of Rackspace. This attracted over 20 companies including the biggies like
Intel, Dell and Citrix to join this initiative. Since its launch the list has grown
to over 120 companies. One of the recent wins for OpenStack came from HP.
HP has recently announced HP Cloud that is completely built on OpenStack.
Its definitely an indication that the industry is open to embrace OpenStack.
In October 2011, Rackspace has announced plans to hand over the
responsibility of the project to OpenStack Foundation with the intent of
making it a true industry standard for Cloud. Internap, one of the Public
Cloud providers had introduced the first commercial implementation of
OpenStack.
49
OpenStack? The basic requirement for any IaaS environment is compute and
storage services. In the case of Amazon Web Services, EC2 and S3 deliver the
compute and storage services. Beyond these two core services, IaaS also
needs a service to catalog and manage the virtual machine images. Of
course, there are many other key components that make the offering more
complete and mature, but compute, storage and VM catalog manager forms
the core of an IaaS platform. OpenStacks compute service is code-named
Nova, the storage service is code-named as Swift and the catalog manager is
code-named Glance. These three form the building blocks of OpenStack.
Lets take a closer look at these services.
50
51
Chapter 8
Introduction to Cloud Foundry
Cloud Foundry originally started as a platform to deploy Java Spring
applications on Amazon Web Services. In April 2011, VMware acquired Cloud
Foundry and made that it into an open source, multi-language and multiframework PaaS offering. Cloud Foundry supports multiple languages and
multiple runtimes such as Java, Spring, Ruby, Scala and Node.js. VMware
calls this an Open PaaS as Cloud Foundry can run on anything from a
notebook PC to a Public Cloud.
Cloud Foundry has three dimensions to the platform. The first one is all
about the choice of frameworks while the second is choice of application
services and the final dimension is the deployment choice.
Framework Choice
52
Cloud Foundry supports Spring for Java, Rails and Sinatra for Ruby, Node.js
and JVM languages like Groovy, Grails and Scala. It also supports Microsoft
.NET Framework and became the first non-Microsoft platform to support
.NET. This makes Cloud Foundry one of the first Polyglot PaaS.
Application Choice
The Cloud-era developers need support of a reliable messaging system,
NoSQL databases along with relational databases. Cloud Foundry includes
support for RabbitMQ for messaging, MongoDB and Redis for NoSQL and
MySQL as the relational database. The list of supported services is growing
and recently PostgreSQL support was added to the platform.
Deployment Choice
Cloud Foundry can be deployed on notebook PCs through Micro Cloud
Foundry. Micro Cloud Foundry is the complete version of Cloud Foundry
designed to run in a virtual machine on a developers PC or Mac. It can also
be deployed on Private Cloud running within an enterprise or on a Public
Cloud like Amazon Web Services. This makes Cloud Foundry an extremely
flexible PaaS.
53
Routers handle all HTTP the traffic targeting the applications. They route
URLs to applications and also does load balancing of the traffic across
instances.
Cloud Controllers are the key components that handle packaging and staging
of the applications. They bind various services to applications. The external
REST API is exposed through them.
DEA stands for Droplet Execution Agent. Every unit of executable code in
packaged as a Droplet in Cloud Foundry. These Droplets abstracts the
underlying code and exposes a generic executable code unit. DEA is
54
responsible for executing the code within each Droplet. They provide the OS
and runtime environment.
Summary
Cloud Foundry is quickly gaining ground as an Open PaaS. Many vendors are
announcing their support and bringing newer platforms and services into the
stack. It may provide tough competition to commercial PaaS vendors like
Microsoft and Google.
55