Article Preview
TopIntroduction
By enabling computing power and storage as a utility that is consumed on demand, Cloud Computing has made a significant impression. Many believe that it can bring major savings following the footsteps of electricity, which is one of the major success stories of Utilities (Carr, 2005). These savings can come in many forms like outsourcing, on-demand resource provision, economics of scale, pay-as-you-go, etc. Let us look at a few such benefits.
For most organizations, IT infrastructure incurs significant costs while supporting non-key functions of those organizations. However, outsourcing non-key functions and focusing on competitive advantages are considered the guiding principal for organizations. Therefore, most organizations want to outsource their IT functions as much as possible. Enabling outsourcing by moving IT functionality to the Cloud is one of the key promises of the Cloud.
Cloud comes in three flavors: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), and Business Process as a Service (BPaaS). Since SaaS comes as customizable turnkey solutions, it is the most promising approach for outsourcing among the three. Examples of such SaaS applications are GMail, Salesforce etc., where end users can use them with almost zero operational effort. However, this model does not work for all applications. For specific applications like Customer Relationship Management (CRM) or Email, where behavior is well-defined and universally accepted, SaaS applications have greater chances for matching the exact scenarios of the users. However, most IT infrastructures have custom behaviors that do not fit with off-the-shelf SaaS applications. To handle such cases, user can go to IaaS. However, IaaS can only takeoff Hardware maintenance cost, which is anyway a small fraction. Therefore, IaaS users have to build, deploy, and run the applications themselves. PaaS provides a middle ground by enabling users to run custom applications in a third-party hosting environments.
Example of such applications are a Web Application, J2EE application, Web Service, Workflows, or a combination that runs in a third-party hosting environment. There are many kinds of PaaS services available ranging from databases like database.com to messaging services like Amazon Simple Queuing Service (SQS) to Windows Azure and Google AppEngine.
Due to factors like millions of online users, mobile devices, Facebook and viral marketing, the Slashdot effect--that is a large spike of requests for an application in a small period of time--has become common. Conventional wisdom is to allocate resources for systems for maximum load, but with steep load spikes, such allocations are unrealistic and wasteful. On these settings, Cloud provides an alternative solution by letting the users allocate resources on demand.
However, SaaS, PaaS and above cases have pay-as-you-go model as a key assumption. That is a user can ask for resources, use them only when he needs them, and release resources when he does not. If this assumption holds, unused applications should cost the user almost nothing. For this model to sustain, such unused applications should also cost almost nothing for the application provider as well.
We argue that to support the pay-as-you-go model, both SaaS and PaaS middleware should be able to support applications owned by many users (we call them tenants) within the same server while allocating resources on demand. It is possible to do this through IaaS where one can run a VM per each user. However, many of the applications and users are not active (in use) often. If a hosting provider has 10,000 tenants and if only few hundred are in use at a given time, then always running a VM for each is a waste. Since booting-up a VM often takes time and does not complete fast enough to serve the first request, keeping VMs in disk and booting VMs on demand is often impractical.
As a solution to this problem, multi-tenancy has been proposed and is considered a key enabling technology for the Cloud. The idea is that the same server instance can support multiple tenants, and that enables hosting organizations to mix and match heavily-used and lightly-used tenants together. This enables them to run the overall infrastructure with much less resources. In summary, with multi-tenancy, the unit of sharing is smaller than a virtual machine, enabling increased sharing of resources.