In this "Cloud services for your virtual infrastructure" series, learn about the three major types of cloud services: Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS).
This first article explores how IaaS provides a set of building blocks, or services, such as virtual servers, data storage, and databases. Using these services, you can create a platform to deploy and run your applications. Also learn about Eucalyptus, an open source software infrastructure for implementing cloud computing with clusters or workstation farms.
Loosely defined, cloud computing is the usage of scalable computing resources provided as a service from outside your environment on a pay-per-use basis. You only pay for the resources you use and can access any of the resources that live in the cloud at any time and from anywhere across the Internet. You no longer have to care about administration of the physical hardware and infrastructure; you can leave those responsibilities to the cloud services provider. Cloud computing is a completely different way of looking at computing and information technology services. The promise of cloud computing is to deliver scalable and easy access to the computing resources you need.
As shown in Figure 1, 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.
Figure 1. Characteristics of a cloud service
Cloud services can be classified into three general types.
- Software as a Service (SaaS)
- This is the most common type of cloud service and one that most of us have used at some point. In the SaaS cloud model, the service provider supplies all the infrastructure along with the software product. Users interact with the service using a Web-based front end. These services cover a wide range, from Web-based e-mail like GMail to financial software like Mint.
- Platform as a Service (PaaS)
- Cloud service that provides software and product development tools hosted by the provider on their hardware infrastructure. Users can create applications using this platform and the APIs provided or with a graphical user interface for development. Popular examples of this kind of a service are Force.com from Salesforce.com and Google App Engine.
- Infrastructure as a Service (IaaS)
- Cloud services that provide access to basic building blocks as services. You can combine and layer these building blocks to build the infrastructure you need for running your applications. The most popular examples of IaaS are Amazon Web Services (AWS) and Rackspace.
Figure 2 shows the three general types, and corresponding examples, of cloud services.
Figure 2. Types of cloud services
Cloud services can also be categorized into three types based on access and location;
- A public cloud is available to anyone on the Internet. Any user can sign up to use the public cloud. AWS and Rackspace are probably the two largest providers of public clouds.
- A private cloud is a proprietary cloud environment that only provides cloud services to a limited number of users. Private clouds are usually within your own data center behind your firewall.
- A hybrid cloud, sometimes called a virtual private cloud, provides services that run on a public cloud infrastructure, but limits access to it with a virtual private network (VPN).
Eucalyptus is one of the few currently available cloud services that can be a public cloud, run on AWS, or it can be a private cloud running behind your firewall.
IaaS clouds provide a set of building blocks, or basic services, such as virtual servers, data storage, and databases. You can stitch these services together into a platform for deploying and running your applications. You can build up and tear down systems with ease. IaaS services are usually accessed with an API using SOAP- or REST-based messages.
IaaS clouds are completely scriptable environments; they lend themselves to easily creating on demand frameworks. The ability to very quickly assemble complete application deployment environments, which can expand or contract based on demand for resources, is a great value proposition for today’s IT departments. In addition to the elasticity, another attraction is the pay-per-use for the service. You pay only for what you consume, and no longer have to allocate resources up front.
A variety of applications can benefit from using IaaS systems.
- Testing and staging
- Complete testing and staging environments can be created, used, and torn down when not needed. No more lag times for hardware requisitioning and waiting for the environments to be ready. Anytime you want to test, you can create a new environment and discard it once testing is complete.
- Web application deployment environments
- You can use IaaS to run your Web sites and give them the ability to easily handle an increase in traffic by expanding your resources on demand. You can even use IaaS cloud services to create additional short-lived Web sites that cater to a specific marketing campaign or sales strategy.
- Storage needs
- Your enterprise could use the cloud services as a location to store files and other data for your users.
- Large-scale data processing
- You can use the power of the cloud services to crunch massive data sets and take advantage of large-scale parallel processing. Create grids on demand for processing large data and tear them down once the processing is done.
AWS, the first widely available IaaS system, provides a set of services accessible on the Web that give programmatic access to Amazon’s ready-to-use computing infrastructure. The robust computing platform that Amazon has built and refined over the years is now available to anyone, anywhere, with access to the Internet. AWS provides the basic building-block infrastructure services that fulfill some of the core needs of most systems. Complex and diverse enterprise applications can be architected by layering functions on top of these reliable and cost-effective building block services provided by Amazon.
The main service offerings from AWS are the Elastic Compute Cloud (EC2) for managing and running virtual instances and the Simple Storage Service (S3) for storing data. These services are accessible with an API using SOAP or REST. This API is quickly becoming the de-facto standard for interfacing with a cloud services environment, and it is well leveraged by Eucalyptus to provide a great IaaS platform.
The Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) is an open source software infrastructure for implementing elastic, utility, and cloud computing using computing clusters or workstation farms. It was started as a research project at the University of California Santa Barbara Computer Science department, and has been commercialized recently as Eucalyptus Systems Inc. Eucalyptus is still maintained and developed as an open source project. Eucalyptus Systems is building additional products based on the open source Eucalyptus; it also offers support services.
Eucalyptus is easy to install on most recent Linux® distributions from source or packages. It provides the following high-level features:
- Interface compatibility with EC2 and S3 (both SOAP and REST interfaces). Almost all existing tools that use these interfaces will work with Eucalyptus-based clouds.
- Support for running VMs that run atop the Xen hypervisor or KVM. Support for other kinds of VMs, such as VMware, is targeted for future releases.
- Cloud administrator tools for system management and user accounting.
- The ability to configure multiple clusters, each with private internal network addresses, into a single cloud.
Eucalyptus consists of five main components that work together to provide the requisite cloud services. The components communicate with each other securely using SOAP messaging with WS-Security.
- Cloud Controller (CLC)
- Within a Eucalyptus cloud, this is the main controller component responsible for managing the entire system. It is the main entry point into the Eucalyptus cloud for all users and administrators. All clients will communicate only with the CLC using the SOAP or REST-based API. The CLC is responsible for passing on requests to the right component, collecting them, and sending the responses from the components back to the client. This is the public face to the Eucalyptus cloud.
- Cluster Controller (CC)
- The controller component within Eucalyptus responsible for managing the entire virtual instance network. Requests are communicated to the CC using the SOAP or REST-based interface. The CC maintains all the information about the Node Controllers that run in the system and is responsible for controlling the life cycle of the instances. It routes requests for starting virtual instances to the Node Controller with available resources.
- Node Controller (NC)
- This controls the host operating system and the corresponding hypervisor (Xen or KVM currently, with support for VMWare on the horizon). You must run an instance of the NC on each machine that will be hosting the actual virtual instances instantiated upon request from a CC.
- Walrus (W)
- The controller component that manages access to the storage services within Eucalyptus. Requests are communicated to Walrus using the SOAP or REST-based interface.
- Storage Controller (SC)
- The storage service within Eucalyptus that implements Amazon’s S3 interface. SC is used for storing and accessing virtual machine images. The VM images can be public or private and are initially stored in compressed and encrypted form. The images are decrypted only when a node needs to start a new instance and requests access to the image.
A Eucalyptus cloud installation can aggregate and manage resources from a single cluster or multiple clusters. A cluster is a group of machines connected to the same LAN. You can have single or multiple instances of an NC in a cluster, each of which manages the instantiation and termination of virtual instances.
A single-cluster installation, as shown in Figure 3, will consist of at least two machines: one running the CC, SC, and CLC, and the other one running the NC. This configuration is suitable mainly for experimentation and speedy configuration. You can simplify this even further by combining everything onto a single machine, but you will need hefty machine specifications to pull it off.
Figure 3. Topology of a single-cluster Eucalyptus installation
A multi-cluster installation can situate each of the components (CC, SC, NC, and CLC) on separate machines. This is the preferred way to configure your Eucalyptus cloud if you intend to do serious work with it. The multi-cluster installation also gives you the opportunity to significantly enhance performance by selecting machines that complement the type of controller running on it. For instance, you can select a machine with a super-fast CPU for running the CLC. The choice of multiple clusters will result in higher availability, and in distribution of load and resources across the clusters. The concept of a cluster is similar to the concept of an availability zone in Amazon EC2. You distribute resources across multiple availability zones so that a failure in one does not affect your application. Figure 4 shows an example.
Figure 4. Topology of a multi-cluster Eucalyptus installation
Before installing and using Eucalyptus on your infrastructure, you need to consider the hardware requirements. Though you can run it all on one laptop for experimentation, a multi-cluster option would be better for a reasonable deployment scenario. Below are some guidelines for sizing the hardware from the administrators at Ubuntu. The guidelines should be broadly applicable to any Linux distribution (not just Ubuntu).
The following specifications are suggested for machines that will be used for running the CC, CLC, Walrus, or SC.
|CPU||1 GHz||2 x 2GHz|
|Memory||512 MB||2 GB|
|Disk||5400rpm IDE||7200rpm SATA|
|Disk space||40 GB||200 GB|
|Networking||100 Mbps||1000 Mbps|
Machines that will be used for running the NC need much more horsepower since they will run each of the virtual instances. They will also need sufficient disk space to store the images used for launching the instances. The machines that run the NC should preferably be multi-core, with at least 4 GB of memory, and use speedy disk drives. Below are some suggested specifications.
|CPU||VT extensions||VT, 64-bit, multi-core|
|Memory||1 GB||4 GB|
|Disk||5400rpm IDE||7200rpm SATA or SCSI|
|Disk space||40 GB||100 GB|
|Networking||100 Mbps||1000 Mbps|
At the time of this writing, the latest version of Eucalyptus is 1.6. You can try out Eucalyptus immediately by using the freely available public instance ucalyptus Public Cloud (EPC) hosted by the project. EPC has limited resources, so restricts the number of instances that can be launched and the amount of storage that can be used. Still, it's a great way to test drive Eucalyptus and get a feel for the environment.
Eucalyptus can be installed from source or by using packages for specific Linux distributions. Installing from source is more involved, but will work on almost any recent version of Linux. Ready-to-install packages are available for Redhat and Debian-based distributions. Refer to the Eucalyptus administrator guide for detailed installation instructions. The simplest way to install Eucalyptus is to install the latest version of the Ubuntu Linux distribution named Karmic Koala, and leverage the Ubuntu Enterprise Cloud that provides complete support for running Eucalyptus-based clouds (see Resources).
Ubuntu Enterprise Cloud (UEC) is a new open source initiative by Ubuntu to make it easier to deploy, configure, and use cloud infrastructures based on Eucalyptus. UEC makes it easy to:
- Create public clouds that run Eucalyptus on Amazon's EC2 infrastructure
- Create private clouds that run on your own infrastructure within your data center behind your firewall
This is by far the simplest way to install and try Eucalyptus. Just download the CD server version and install it wherever you want. UEC is also the first open source project that lets you create cloud services in your local environment easily and leverage the power of cloud computing.
Eucalyptus is a well-architected cloud services environment you can use to create a public cloud on Amazon’s EC2 infrastructure, or to create private clouds within your data center (or even your laptop). If you are investigating cloud computing for use within your team or organization, Eucalyptus is well worth consideration for your cloud services platform. It provides several advantages.
- Open source and development
- Eucalyptus was created to foster communication and research in cloud computing platforms. It is freely available in source form, making it easy for you to peek underneath the covers or to create extensions of the platform to meet your needs. The pace of development is quick. Features and improvements are being added to Eucalyptus at a fast pace.
- Great community
- Eucalyptus has a great community of enthusiastic and knowledgeable users willing to share their insights freely with other users. Their forums are a great way to get support and interact with other Eucalyptus users.
- Public cloud
- Eucalyptus can easily be installed and run on Amazon's EC2 framework as a public cloud.
- Private cloud
- Eucalyptus can be installed within your data center behind your firewall as a private cloud running on your own infrastructure. You have the benefits of complete control over security and the environment.
- Because of the compatibility of Eucalyptus with Amazon's EC2 API and the flexibility of Eucalyptus, you can migrate your applications from one cloud to another in an easy fashion. You can even create hybrid clouds that use public and private clouds together.
- Well tested
- Eucalyptus is now part of the Ubuntu Enterprise Cloud, and is a component of thousands of Ubuntu servers worldwide. This scale of testing will stabilize the Eucalyptus platform very quickly.
- Commercial support
- If you need faster support than the forums can provide, commercial support is available for Eucalyptus-based clouds.
In this article, you learned about the Infrastructure as a Service (IaaS) cloud computing environment. You also explored the open source Eucalyptus project that can be used for creating public or private cloud infrastructures.
Part 2 examines Platform as a Service (PaaS) cloud environments and Appscale, an open source project for running Google App Engine applications.
provides instructions and details for configuring and managing the
Read "Eucalyptus: A Technical Report on an Elastic Utility Computing Architecture
Linking Your Programs to Useful Systems"
on Eucalyptus by the team at UCSB.
See the detailed guide for
Installing Eucalyptus from source.
The simplest way to install Eucalyptus is to install the latest
version of the Ubuntu Linux distribution Karmic Koala and
leverage the Ubuntu Enterprise Cloud.
Read about the NEBULA cloud computing
platform from NASA that is based on Eucalyptus. Follow the
NEBULA project on
Twitter. Then get more information about the
applications hosted by NASA on the
Read case studies and
from a wide variety of companies using Amazon Web Services,
the original IaaS,
to power their businesses.
Learn all about the Ubuntu
for tracking changes to Eucalyptus packages in the UEC.
computing on Ubuntu covers all things related to the Ubuntu Enterprise
Cloud and Ubuntu on Amazon EC2.
The New York Times article
Computing: So You Don’t Have to Stand Still" discusses the buzz around cloud computing.
Follow Eucalyptus updates from
"Cloud Computing. Available
at Amazon.com Today" in Wired magazine discusses Amazon’s cloud computing
initiatives and their game changing nature.
To listen to interesting interviews and discussions for software developers, check out developerWorks podcasts.
Stay current with developerWorks' Technical events and webcasts.
Follow developerWorks on Twitter.
Check out upcoming conferences, trade shows, webcasts, and other Events around the world that are of interest to IBM open source developers.
Visit the developerWorks Open source zone for extensive how-to information, tools, and project updates to help you develop with open source technologies and use them with IBM's products, as well as our most popular articles and tutorials.
The My developerWorks community is an example of a successful general community that covers a wide variety of topics.
Watch and learn about IBM and open source technologies and product functions with the no-cost developerWorks On demand demos.
Get products and technologies
Innovate your next open source development project with IBM trial software, available for download or on DVD.
IBM product evaluation versions
the online trials in the IBM SOA Sandbox and get your hands on application development tools and middleware products from
DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.
Follow the Eucalyptus
to interact with the community and for support.
Participate in developerWorks blogs and get involved in the developerWorks community.
Prabhakar Chaganti is the CTO of Ylastic, a start-up that is building a single unified interface to architect, manage, and monitor a user's entire AWS Cloud computing environment: EC2, S3, SQS and SimpleDB. He is the author of Xen Virtualization and GWT Java AJAX Programming. He is also the winner of the community choice award for the most innovative virtual appliance in the VMware Global Virtual Appliance Challenge. He can be found on Twitter as @pchaganti.