Sunday, 22 July 2012

OpenStack Cloud Services


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:
  1. 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.
  2. Elasticity — you can scale up or scale down your consumption of resources based on demand.
  3. 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