Professional Documents
Culture Documents
1.
Introduction
2.
Current definitions
Cloud computing has gained a lot of interest. In fact, it has gained so much interest that simply noting that it has gained much interest already has become a cliche. The subject of clouds is foggy too: the impact of different pricing models on short term and long term operations is still developing - as are the pricing models. There are various kinds of vendors for various kinds of clouds: public, private, hybrid and community clouds. There is a growing interest in managing all this in a cloud-independent manner. In researching the current offerings and getting our feet wet with actually using various combinations, we have come to the conclusion that we need to add one concept to the cloud stack in order to gain the necessary clarity in oder to define proper usage of the cloud flavors for our end users. The rest of the whitepaper is organized as followed: we will look at existing definitions inside the cloud stack first. Then, we will add our refinement of the cloud stack - MaaS, Middleware as a Service - in a structured way and discuss the impact on the various cloud types. Well end with some examples of both custom and of the shelf MaaS. 1
In this section we will take a look at the various definitions to establish a common ground. That way, we can introduce MaaS in a structured manner in the next session. We will take a look at both the kinds of cloud deployment models and the cloud service delivery models one can distinguish within a cloud. These concepts are orthogonal, i.e. any combination of cloud service delivery models can be built on top of any combination of cloud deployment models.
Hybrid clouds. Hybrid clouds are a combination of private and public clouds. Hybrid clouds often are build to scale out from a private to a public cloud (also called surge computing) or grow inwards from public to private clouds as applications grow and thus the minimum required base capacity is better known. Community clouds. A community cloud may be established where several organizations have similar requirements and seek to share infrastructure so as to realize some of the benefits of cloud computing. With the costs spread over fewer users than a public cloud (but more than a single tenant) this option is more expensive but may offer a higher level of privacy, security and/or policy compliance [1]. Lets look into these different flavors of cloud with a bit more detail. There is both a quantitatively and qualitatively difference between private and public clouds. Private clouds require a larger upfront investment - at least some hardware is needed, and often licenses for cloud provisioning software are needed as well. Private clouds may be tuned more towards the needs of specific applications, whereas public clouds have a few sizes fits all approach. Metering and billing can be done in a variety of ways, and often needs to match specific financial organizational structures. Public clouds are mostly based on pay-asyou-go models, although discounts can sometimes be received when one makes an upfront commitment against a fixed fee for a fixed period, typically 1-3 years. The main cost components are: bandwidth in bandwidth out computing hour GB/month storage space cloud service request
peak performance in a private cloud that hugely exceeds the capacity during a short time frame. In other words: one wants to handle the load, but cant justify buying the hardware for say, two weeks of full-time peak load, or 1 hour per day. Hybrid clouds also grow when a revenue driven application starts in a public cloud based on a pay-as-you-go model. Assuming a positive revenue, at some point the minimum base load of the application may stabilize, at which point it will be cheaper to scale into a private cloud. Note that the private cloud may grow conservatively as the minimum base load grows. As hybrid clouds consist of at least two type of clouds, the need for sophisticated management software for metering and provisioning has arisen. And indeed, a whole market of management applications is slowly taking shape - the obvious problem being that the cloud vendors (both public and private) are still moving rather fast and in slightly different directions. Finally, community clouds may turn out to be very important for scientific communities when e.g. collaborating on the national research network or national HPC level. In terms of features and cost a community cloud will be most likely based on a private or a hybrid cloud - hence all the same observations apply. This section described the various types of clouds. The next sections will describe how these various types of clouds may be used on different layers.
2.2. IaaS
The first level of a cloud service delivery model is recognized as Infrastructure-as-aService, or IaaS. At this level, the service offered consists mostly of raw storage and computing capacity. The capacity is typically available on demand, metered by the computer hour or GB data in/out/stored per month, and conceptually it provides an extension of virtual private servers. A simple way to think about this is: Virtual servers + storage + API + on demand = IaaS IAASs are targeted at organizations that want to virtualize their raw computing and 2
Qualitatively, public clouds are more common, and the huge economy of scale may actually slow the average performance of a utility computing hour. On the other hand, better virtual hardware often comes available as new, higher-end possibilities. Hybrid clouds consist of a combination of private and public clouds. They are often used to scale out for applications that have
storage infrastructure. This is mostly done by outsourcing to a public cloud or by setting up a centralized private cloud. It is not uncommon to see the private cloud being used as internal buffer capacity to provide more flexibility internally; used this way a private cloud acts in a similar way to the real computing infrastructure of an organization as the public cloud acts to the private cloud in a hybrid cloud. Both scenarios add extra flexibility to the infrastructure. Examples of vendors that offer IaaS cloud services are Amazon Web Services, Rackspace Cloud, Eucalyptus, VMWare, Ubuntu Enterprise Cloud (based on Eucalyptus), GoGrid and Flexiscale.
Google Apps is a paid SaaS targeted towards the Enterprise Google Maps is a free SaaS providing map data Basecamp is a paid SaaS for project management Wikipedia is a SaaS that provides an online encyclopedia Combining all of the above, we get the following image for a cloud service stack:
SaaS
PaaS
2.3. PaaS
On the next level of the cloud service delivery stack we find Platform-as-a-Service, or PaaS. This is a less raw environment and typically provides a full fledged application runtime environment. Services included may be database services, file system services, dynamic web pages, but also higher lever services, such as workflow services. PaaS can be seen as the natural evolution of application servers: they provide magical scalability for applications built within the framework of a given PaaS. The downside is that application development and deployment is limited to the supported frameworks(s). Organizations that have expertise in developing or deploying applications within frameworks that are supported, e.g. Microsoft .NET and Azure, will benefit the most. Well known examples of PaaS vendors are Microsoft Azure and Google AppEngine.
IaaS
Server
There is a problem with the image above though; some components exist both on the PaaS and IaaS layer. In the following section we will refine this image by grouping these components in an additional layer called MaaS: Middleware-as-a-Service.
3.
There is a need for a refinement of the cloud stack. There is an elephant in the room with regards to the the current service delivery definitions as some components dont have a place in the previously described cloud service stack. These services tend to be infrastructural without being a full platform - a bit of both. When we take a closer look at these components, they resemble what we call middleware in more traditional computing. So we can group these components quite naturally in a new layer: Middleware-as-aService, or MaaS.
2.4. SaaS
Software as a service, or SaaS, is any service that can be licensed from vendors to clients and run over the Internet (though typically limited to the web). This does not imply that all SaaS requires the user to pay many consumer oriented Saas offerings from e.g. Google are free. It is probably best to give a better feel for SaaS by listing some examples: 3
3.1. MaaS
Middleware-as-a-Service, or MaaS, can be viewed as components that are needed to
develop or orchestrate large scale cloud based applications above the infrastructure layer, but not visible to the end users. Parts of the PaaS will be using these middleware components, but some SaaS will use these components directly as well.
Apache ZooKeeper - configuration management and locking SQLAzure - Microsoft Database as a service Note that for the MaaS components generally holds: deployed on IaaS + automatic scaling = MaaS An example would be deploying Hadoop on a cloud, using the IaaS layer to scale. Another example being researched in the NEON project is that of cloud backed storage, building on MaaS components such as Apache ZooKeeper [4].
These are some components that can be viewed as MaaS components: Queues Databases, both relational and nonrelational Locking services Map-reduce execution engines Payment services MaaS components all have the characteristic that they are available on-demand (utility computing), are metered and billed for actual usage. They can often be launched and managed via simple HTTP based APIs. This leads us to the following figure for a cloud service stack when we include MaaS:
SaaS
PaaS ! MaaS
IaaS Server
Examples of already available MaaS services and components are: Amazon Simple Queue Service Amazon SimpleDb Amazon RDS (Relational Database Service) Hadoop Amazon Elastic MapReduce -based on Hadoop Apache Cassandra - column oriented database
The other implication is that the way that SaaSs are being developed is actually different than is often depicted. Most SaaSs use a PaaS built on top of a MaaS, and use MaaS sometimes directly (see the orange shape in the picture above). One can argue about the cleanness of that design; it is however obvious that there is demand for this kind of use - see the product roadmaps of the larger vendors and the already available services.
5.
References
[1] http://en.wikipedia.org/wiki/ IaaS#Community_cloud [2] http://was.amazon.com [3] http://www.microsoft.com/ windowsazure/ [4] http://hadoop.apache.org/zookeeper/ [5]Above the Clouds: A Berkeley View of Cloud Computing", Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia, http:// radlab.cs.berkeley.edu, February 10, 2009
4.
Conclusion
We hope to have shown that by defining an additional middleware layer in the cloud stack the difference between various offerings can be better understood. We have also mentioned that orchestration between different cloud types in a hybrid cloud approach might be achieved by using any of the available middleware components. Finally, we have shown that MaaS might be a usable offering in a private or community cloud environment on its own.