Sunday, 22 July 2012
Abstract
In an
attempt to gain a competitive edge, businesses are increasingly looking for new
and innovative ways to cut costs while maximizing value. We are evaluating
OpenStack cloud services from technical and commercial angles to be used by an
enterprise.
Introduction
As per Wikipedia: Cloud computing is
the delivery of computing and storage capacity as
a service to a community of end-recipients. The name comes from the
use of a cloud-shaped symbol as an abstraction for the complex
infrastructure it contains in system diagrams. Cloud computing entrusts
services with a user's data, software and computation over a network.
A cloud service is distinguished from traditional managed
hosting services by three main characteristics:
- Pay
as you go — you consume and pay for the service by the minute or by the
hour. You do not pay in advance for resources that you may or may not
actually use.
- Elasticity
— you can scale up or scale down your consumption of resources based on
demand.
- Managed infrastructure — the infrastructure for the service is owned and completely managed by the provider.
As per some of the analysts, anything and
everything beyond your firewall is cloud. So the
cloud is a physical place, perhaps owned and controlled by some other entity,
and it contains computing resources that are available pretty much on demand
for a price.
There are mainly three types of cloud computing:
§ Infrastructure
as a Service (IaaS),
Examples of IaaS include: Amazon Cloud Formation (and underlying services such as Amazon EC2,
Simple Storage Service), Rackspace Cloud, Google Compute Engine, and RightScale.
§ Platform
as a Service (PaaS),
and Examples of PaaS include: Amazon Elastic Beanstalk, Heroku, EngineYard, Google App Engine, and Microsoft Azure.
§ Software
as a Service (SaaS). Examples of SaaS
include: Google Apps, Quickbooks Online and Salesforce.com.
Using Infrastructure as a Service, users rent
use of servers (as many as needed during the rental period) provided by one or more
cloud providers. Using Platform as a Service, users rent use of servers and the
system software to use in them. Using Software as a Service, users also rent
application software and databases. The cloud providers manage the
infrastructure and platforms on which the applications run.
End users access
cloud-based applications through a web browser or a
light-weight desktop or mobile app while the business
software and user's data are stored on servers at a remote
location. Proponents claim that cloud computing allows enterprises to get their
applications up and running faster, with improved manageability and less
maintenance, and enables IT to more rapidly adjust resources to meet
fluctuating and unpredictable business demand.
However
further cloud service can have 3 further services in stack, which are
following:
Clients (examples) are computer
hardware and/or computer software which rely on The Cloud for application delivery, or which is
specifically designed for delivery of cloud services, and which are in either
case essentially useless without it.
Services (examples)
are "software system[s] designed to support interoperable machine-to-machine interaction over a network" which may be accessed by other cloud
computing components, software (eg Software
plus services) or end users directly.
Storage (examples)
is the delivery of data storage as a service (including database-like services),
often billed on a utility
computing basis (eg per gigabyte per month)
Most of the current commercial Cloud services providers try to focus on one of the above and offer services to customers. Commercial cloud services either use proprietary technology or licensing method resulting in increased costs for customers.
Why not Commercial Cloud Services?
Some of the
major difficulties with going ahead with commercial cloud services stacks are
following:
1) Technology Lockin - One of the concerns for
Software Architects while building applications for cloud is the technology
lock-in. For example a .NET application built for Microsoft Azure services
would not be compatible with Amazon AWS and vice versa. Also cloud
applications designed for Microsoft Azure & Amazon AWS are not directly
portable on premise environments. Basically applications designed for AWS &
Azure are locked in with the provider and you need to spend good amount of
re-engineering efforts to move them out.
2) Development Costs – If you are planning to
develop applications/services for commercial platforms then you need to have
knowledge of their proprietary SDKs etc. Hence development time goes up and
costs are further increased.
3) Licensing Costs – Due to the nature of
proprietary technology, the cost of licensing tend to be higher.
4) Small Development Community – As the cost of
development is higher, small vendors tend to shy away from the development
resulting in small development community.
5) Compatibility – Commercial vendors usually try to
create compatibility within small group of hardware and software vendors. This
may result in hardware and software compatibility issues for customers.
Some of the above mentioned concerns get
addressed with Open Source environment.
1) It’s based on open source and open standards.
Hence code portability to the users. Developers can use existing python, perl
or GEMs to port their applications to Cloud.
2) Low development cost as no upfront cost of
licenses/knowledge upgrade.
3) Negligible licensing cost as it is based on Open
Source standards.
4) Global development community
5) High level of compatibilities
A
typical Cloud Infrastructure
A typical cloud is made of Cloud controller,
nodes, network filtering, caching and load balancing mechanism. Each node is
capable of running multiple VMs. Further nodes can be managed by virtual
infrastructure manager.
OpenStack
Let’s take case of OpenStack, which is an open
source solution. If we have to offer OpenStack as IaaS then following features
are required in OpenStack solution:
1. Allow application owners to register for our
cloud services, view their usage and see their bill (basic customer relations
management functionality)
2. Allow Developers/DevOps to create and store
custom images for their applications (basic build-time functionality)
3. Allow DevOps/Developers to launch, monitor and
terminate instances (basic run-time functionality)
4. Allow the Cloud Operator to configure and
operate the cloud infrastructure
These are the basic minimum features for any
service provider to ensure that he is able to monetize the services and get
revenue out of it.
OpenStack
architecture
It’s quite simple and provides all the basic features that IaaS needs.
·
Dashboard (Horizon)
provides a web front end to the other OpenStack services
·
Compute (Nova) stores
and retrieves virtual disks ("images") and associated metadata in
Glance
·
Image (Glance) can
store the actual virtual disk files in Object (Swift)
·
Services authenticate
with Identity (Keystone)
Logical OpenStack Architecture
·
End users can interact
through a common web interface (Horizon) or directly to each service through
their API
·
All services
authenticate through a common source (facilitated through Keystone)
·
Individual services
interact with each other through their public APIs (except where privileged
administrator commands are necessary)
OpenStack
Implementation scenario
Hypervisor: Xen
Device Emulation: KVM
Networking: vSwitch
Virtual Image Management: ovftool, Clonezilla
Red Hat introduced the libvirt library as an API for managing
platform virtualization(hypervisors and VMs). What makes libvirt interesting is
that it supports a number of hypervisor solutions (KVM and Xen being two) and
provides API bindings for number of languages (such as C, Python, and Ruby). It
provides the "last mile" of management, interfacing directly with the
platform hypervisor and extending APIsout to larger infrastructure-management
solutions. With libvirt, it's simple to start and stop VMs, and it provides
APIs for more advanced operations, such as migration of VMs between platforms.
Using libvirt, it's also possible to use its shell (built on top of libvirt),
called virsh.
Benefits
of OpenStack solutions
1) Its diverse and has active developer community,
its being based on industry opens standards, flexibility, and ability to scale.
2) Zero initial investment on solution
3) Each of the commercial vendors has its own API,
and these APIs doesn’t support various storage systems. OpenStack works on open
standards.
4) OpenStack uses software logic to ensure data
replication and distribution across different devices, meaning that inexpensive
commodity hard drives and servers can be used in lieu of more expensive
equipment. Further Quota facility ensures that users can’t provision more than
allocated disk space.
Points
to further look for in OpenStack:
1) Presently OpenStack doesn’t have billing solution
and Zuora
kind of solution need to be separately integrated
2) Customer portal needs to be further created
3) Some work is still required for making
nova-network more available.
Conclusion
OpenStack provides all the features that are
required to run IaaS cloud services. However to commercialize it, some level of
integration and effort is required.
Sunday, 22 July 2012 by Saurabh Gupta · 0
Subscribe to:
Posts (Atom)