3. OPEN SOURCE
Wikipedia - In production and development,
open source is a philosophy, or pragmatic
methodology that promotes free redistribution
and access to an end product's design and
implementation details. Before the phrase open
source became widely adopted, developers and
producers used a variety of phrases to describe
the concept; open source gained hold with the
rise of the Internet, and the attendant need for
massive retooling of the computing source
code.
4. WHAT IS OPEN SOURCE SOFTWARE?
Open source software is software that is
subject to an open source license.
An open source licensor must give the
licensee certain rights to be considered open
source
Basically, the licensee has the right to use,
modify or distribute the software, and the
right to access the source code.
5. KEY OPEN SOURCE POINTS
• Source code must
be made
available.
Free
Redistribution
• The recipient must
be allowed to
make derivative
works
Derivate Work
• The license must
be technology
neutral - no
discrimination
against systems
Neutral
6. OPEN LICENSE TYPES
The GPL, or General Public License
•By far the most popular
•No warranty - Disclaimer required
•Any work based on the original OSS program must be licensed as a whole,
at no charge to all third parties, and under the terms of the GPL
The Berkeley Software Distribution license (BSD)
•Like GPL, except that derivative works can be kept proprietary
Mozilla/corporate licenses
•More expertly drafted
•Serve as a model for later commercial licenses
•Different provisions on relicensing
•No copyleft
7. CLOUD
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.
8. MAIN FEATURES OF CLOUD COMPUTING
CLOUD
COMPUTI
NG
On-
demand
self-
service
Broad
network
access
Measured
Service
Rapid
elasticity
Resource
pooling
9. CLOUD SERVICES
Infrastructure as a Service (IaaS)
• The capability provided to the consumer is to provision processing,
storage, networks, and other fundamental computing resources where
the consumer is able to deploy and run arbitrary software, which can
include operating systems and applications
• Examples of IaaS include: Amazon Cloud Formation, Google Compute
Engine, and RightScale.
Platform as a Service (PaaS)
• The capability provided to the consumer is to deploy onto the
cloud infrastructure consumer-created or acquired
applications created using programming languages and tools
supported by the provider.
• Examples of PaaS include: Amazon Elastic
Beanstalk, Google App Engine, and Microsoft Azure.
Software as a Service (SaaS)
• The capability provided to the consumer is to use the
provider’s applications running on a cloud
infrastructure.
• Examples of SaaS include: Google Apps,
Quickbooks Online and Salesforce.com.
10. CLOUD COMPUTING DEPLOYMENT
• The cloud
infrastructure is
operated solely for
an organization. It
may be managed by
the organization or a
third party and may
exist on premise or
off premise.
PRIVATE CLOUD
• The cloud
infrastructure is
made available to the
general public or a
large industry group
and is owned by an
organization selling
cloud services.
PUBLIC CLOUD
• The cloud
infrastructure is a
composition of two or
more clouds (private,
community, or public)
that remain unique
entities but are
bound together by
standardized or
proprietary
technology that
enables data and
application portability
HYBRID CLOUD
11. WHAT DO YOU WANT IN IAAS?
Ease of use
Fault tolerance
Low-cost of entry/maintenance
Performance
Ease of expansion
API provisioning
Compatibility with other platforms
Agility / Fast provisioning
12. MAJOR COMPONENTS OF IAAS
Storage
VM Image management
Self service / Web interface
Networking
Fault tolerance
User management
API / Hybrid Cloud Readiness
Installation / Maintenance
13. WHY NOT COMMERCIAL CLOUD SERVICES?
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.
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.
Licensing Costs – Due to the nature of proprietary technology, the cost
of licensing tend to be higher.
Small Development Community – As the cost of development is
higher, small vendors tend to shy away from the development resulting
in small development community.
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.
14. IS OPEN SOURCE THE WAY?
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.
Low development cost as no upfront cost of
licenses/knowledge upgrade.
Negligible licensing cost as it is
based on Open Source
standards.
Global development community
High level of compatibilities
16. HYPERVISOR
A hypervisor, also called virtual
machine manager (VMM), is one of
many hardware virtualization
techniques allowing multiple
operating systems, termed guests,
to run concurrently on a host
computer. It is so named because it
is conceptually one level higher
than a supervisory program. The
hypervisor presents to the guest
operating systems a virtual
operating platform and manages
the execution of the guest operating
systems. Multiple instances of a
variety of operating systems may
share the virtualized hardware
resources. Hypervisors are very
commonly installed on server
hardware, with the function of
running guest operating systems,
that themselves act as servers.
Source: wikipedia.org
17. OPEN STACK
The project aims to deliver solutions for all types of clouds by
being simple to implement, massively scalable, and feature rich.
The technology consists of a series of interrelated projects
delivering various components for a cloud infrastructure solution.
Who's behind OpenStack? Founded by Rackspace Hosting and
NASA, OpenStack has grown to be a global software community
of developers collaborating on a standard and massively scalable
open source cloud operating system.
Who uses OpenStack? Corporations, service providers, VARS,
SMBs, researchers, and global data centers looking to deploy
large-scale cloud deployments for private or public clouds
leveraging the support and resulting technology of a global open
source community.
Why open matters: All of the code for OpenStack is freely
available under the Apache 2.0 license. Anyone can run it, build
on it, or submit changes back to the project.
Nova (compute), Swift (object storage), Glance (image
service), Keystone (identity management), Horizon (gui
18. OPENSTACK AS IAAS?
Allow application owners to
register for our cloud
services, view their usage
and see their bill (basic
customer relations
management functionality)
Allow Developers/DevOps to
create and store custom
images for their applications
(basic build-time functionality)
Allow DevOps/Developers to
launch, monitor and
terminate instances (basic
run-time functionality)
Allow the Cloud Operator to
configure and operate the
cloud infrastructure
21. 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.
23. BENEFITS OF OPEN STACK SERVICES
Its diverse and has active developer community, its being
based on industry opens standards, flexibility, and ability
to scale.
Zero initial investment on solution
Each of the commercial vendors has its own API, and
these APIs doesn’t support various storage systems.
OpenStack works on open standards.
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.
24. POINTS TO LOOK FOR IN OPEN STACK SERVICES
Presently OpenStack doesn’t have billing
solution and Zuora kind of solution need to be
separately integrated
Customer portal needs to be further created
Some work is still required for making nova-
network more available.
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.
25. OPENSTACK VS CLOUDSTACK
OpenStack, “an open source
product influenced by hosting
provider Rackspace and
NASA.
OpenStack provides full
hypervisor support for KVM
and Xen, with limited support
for Microsoft Hyper-V, Citrix
Xen Server, VMware ESX and
others.
OpenStack is deployed via the
various core and incubator
projects, and as such requires
time and know how to get up
and running. The upside of this
is that users can choose which
projects/features are required.
Various installation packages
are available for the separate
projects.
CloudStack, “an open source
project that was acquired by
Citrix
CloudStack software works
with a variety of hypervisors,
including Oracle VM, KVM,
vSphere and Citrix XenServer,
with Oracle VM being a key
differentiator from CloudStack.
Overall, CloudStack is better
packaged for enterprise
adoption, especially in
environments not already
familiar with open source. Its
installation packaging and
customizable admin/end-user
portal are designed for quick,
scalable adoption of the
private cloud.
26. OPENSTACK VS EUCALYPTUS
OpenStack, “an open
source product
influenced by hosting
provider Rackspace
and NASA.
Nova (compute)
Swift (object storage)
Glance (image
service)
Keystone (identity
management)
Horizon (gui interface)
Started as a research project
at UC Santa Barbara
Cloud Controller (CLC)
Manages the virtualization
resources and APIs
Provides web interface
Walrus (S3 storage)
Cluster Controller (CC)
Controls execution of VMs and
their networking
Storage Controller (SC)
Provides block-level storage to
VMs (EBS)
Node Controller (NC)
Controls VMs via hypervisors
27. OPENSTACK VS CLOUDSTACK VS EUCALYPTUS
STORAGE
OPEN STACK CLOUDSTACK EUCALYPTUS
Disk Image Yes Yes Yes
Block Devices Yes Yes Yes
Fault Tolerance Yes Yes Yes
VM IMAGE
Image Service Yes Yes Yes
Self Service Yes Yes Yes
Amazon API Yes Yes Yes
OTHER FACTORS
Codebase Python Java Java, C
Hypervisors Xen, KVM, UML,
LXC, VMware
Xen, KVM,
VMware
Xen, KVM,
VMware,
Citrix XenServer
Maintenance High Medium High
28. WHICH ONE TO CHOOSE
If you choose wrong but have chosen a
good management and abstraction layer,
you can always move your private cloud,
since ‘servers are software’ and can be
destroyed and re-created with the right
management, automation, and
orchestration. With competition comes
lower overall pricing, good news indeed
for enterprise private cloud shops.
Notes de l'éditeur
We will try to explore OPEN, CLOUD, OPEN STACK and look at some of the existing technologies.
OPEN is a philosophy that has changed its meaning over years. Its something that is free and redistributable. Open source software which comes with the code. You don’t have to buy it, you don’t have to worry about licenses, you don’t have to do MCSE courses for it. Its open. However OPEN has evolved over the years and changed its meaning. Now there are various versions of Open Licenses which governs various tools and softwares that we use. It may very well be possible that in an Open sources there are multiple patents and copyrights.
There are minimum basic rules for any software to be classified as open source license. It should subject to an open source license agreement. There should be some rights which must be given
The open source definition is maintained by the Open Source Initiative, and can be found at that organization’s website, http:www.opensource.org/docs/osd. According to scholar Dennis Kennedy, the open source definition embodies three principles, “free distribution, readily available source code, and the right to make derivative works.” Kennedy at 12. The Open Source Initiative website discusses the principles, as does Robert W. Gomulkiewicz, How Copyleft Uses Licenses to Succeed in the Open Source Software Revolution and the Implications for Articles 2B, 36 Hous. L. Rev. 179 (1999) [hereinafter Gomulkiewicz]. This slide, as well as the following slides will discuss the principles as well, mostly based on the aforementioned sources.
The Open Source Initiative functions as the de facto standards body of open source licenses, maintaining the criteria for a license to be considered open source, and approving licenses as open source licenses. The Free Software Foundation was the original body dedicated to what was then called free software, but, as is evident from the widespread use of the term open source, the FSF seems to have been largely been eclipsed by the OSI, at least as a standards setting body.
Condition one protects the right to sell for gratis or for a fee. As freedom refers to access rather than price, there is no contradiction between selling software and free software. See Rosen at 3 (discussing in what way open source software is free). According to Richard Stallman, free software is “free as in speech, not free as in beer.” Kennedy at 3. “Why would anyone pay for free software? Fees may cover the cost or media or duplication. Fees are also earned by including additional software with the free software or by providing training or services. Moreover, fees might be attributable to the benefits associated with acquiring from a trusted distributor with a well-known brand name, such has Red Hat’s version of Linux. Gomulkiewicz at 187.
According to the OSI, the rationale for the principle is that “[b]y constraining the licensee to require free distribution, we eliminate the temptation to throw away long-term gains in order to make a few short-term sales dollars. If we didn’t do this, there would be lots of pressure for cooperators to defect.” http:www.opensource.org/docs.definition.php.
The GPL, in conformance with open source definition, provides licensees with the basic rights that are associated with all open source licenses: the right to modify and distribute the software, and access to the source code. The most significant aspect of the GPL however, is its so-called copyleft provision. This provision requires anyone distributing “any work . . . That in whole or in part contains or is derived from the Program or any part thereof to be licensed as a whole at no charge to all third parties under the terms of this license.” (GPL paragraph 2(b)). This provision effectively prevents anyone from taking software subject to the GPL private. Many proprietary software organizations have been troubled by this provision, and have refused to modify GPL software, or in many cases to even use it. Part of the reason for the concern was that the GPL does not adequately define what “contains or is derived from” means. Companies were concerned that the software would taint their software.
The BSD License, like the GPL, gives the licensee the same basic rights as the GPL – i.e. the right to modify and distribute the software, and access to the source code. The major difference between the BSD and the GPL is that the BSD does not require licensees that wish to distribute the software to license it under the BSD; instead, they may license it under any license that they choose.
The main difference between the Mozilla/corporate licenses and the BSD and GPL licenses is that the Mozilla license was more precisely drafted, due to its arising in a commercial context. It also has certain features with regards to relicensing and reciprocity that differ slightly from either of the other two licenses.
The following characteristics are consistent with those of all cloud computing environmentsand are consistent with the way CloudStack is intended to be deployed.
On-demand self-service - A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.
Broad network access - Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
Resource pooling - The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.
Rapid elasticity - Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
Measured Service - Cloud systems automatically control and optimize resource use by leveraging a metering capability1 at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
Cloud computing falls into three broad service models, Software-as-a-Service(SaaS), Platform-as-a-Service (PaaS) or Infrastructure-as-a-Service(IaaS). CloudStack is classified as Infrastructure-as-a-Service and can be used to deploy the other two types of platforms on top of virtualized server architecture.
Software-as-a-Service (SaaS) - The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings. Platform as a Service
Platform-as-a-Service (PaaS) - The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.
Infrastructure-as-a-Service(IaaS) - The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
The following are the most common common types of cloud computing deployments. CloudStack can be used to provide public or private cloud computing.
Private cloud - The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise.
Public cloud - The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
Hybrid cloud - The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).
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.
CloudStack is open source software written in java that is designed to deploy and manage large networks of virtual machines, as a highly available, scalable cloud computing platform. CloudStack current supports the most popular hypervisors VMware, Oracle VM, KVM, XenServer and Xen Cloud Platform. CloudStack offers three ways to manage cloud computing environments: a easy-to-use web interface, command line and a full-featured RESTful API.
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)
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
OpenStack was originally developed by NASA and Rackspace, and is also backed by the likes of IBM, HP and Dell. It's a series of three core projects that can be used to build a private cloud platform: Compute, Object Storage and Image Service. These three projects provide the base for managing virtual servers, storage and machine images. The core projects do not provide a self-service portal, but there are OpenStack-incubated projects that do.
OpenStack provides full hypervisor support for KVM and Xen, with limited support for Microsoft Hyper-V, Citrix Xen Server, VMware ESX and others. Persistent storage is provided using OpenStack Object Storage to manage the local disk on compute node clusters. Lastly, machine images of various types (including Raw, VHD, VDI, VMDK and OVF) are managed through the OpenStack Image Service.
OpenStack is deployed via the various core and incubator projects, and as such requires time and know how to get up and running. The upside of this is that users can choose which projects/features are required. Various installation packages are available for the separate projects.
With networking being a critical competent of private cloud architecture, the Quantum incubation project is quite interesting. Quantum is an extensible API driven tool for building and managing networks.
CloudStack
CloudStack has been around since 2009 and is implemented in more than 100 production clouds (including GoDaddy, KT and Tata). It's governed by the Apache Software Foundation and supported by Citrix and about 50 other technology partners. Unlike OpenStack, the CloudStack installation is very streamlined and well documented. The CloudStack open source code was acquired by Citrix with the Cloud.com acquisition and released as open source. This gives CloudStack a head start as it was already software being used in production.
CloudStack is designed for massive scalability and centralized management, allowing tens of thousands of geographically distributed servers to be managed from a single portal. CloudStack software works with a variety of hypervisors, including Oracle VM, KVM, vSphere and Citrix XenServer, with Oracle VM being a key differentiator from CloudStack. Another differentiator is support for bare-metal servers. Additionally, CloudStack supports multiple networking models, such as OpenFlow, VLANs and flat networks.
Overall, CloudStack is better packaged for enterprise adoption, especially in environments not already familiar with open source. Its installation packaging and customizable admin/end-user portal are designed for quick, scalable adoption of the private cloud. OpenStack, on the other hand, can be best described as a foundation or framework for cloud computing, not nearly as polished. That being said, OpenStack currently has a deeper pool of open source contributors actively participating. CloudStack comes with a more refined product and heavy user adoption, while OpenStack comes with a strong set of contributors.