On Multi-Tenancy

This article describes how multi-tenancy can be achieved through different levels of virtualization, and outlines the benefits and drawbacks of each approach, while showing how they can complement each other in order to deliver the best possible Cloud Computing platform.

By Ismael Chang Ghalimi, CEO, Intalio — May 2010

Multi-tenancy for cloud applications always rely on some form of virtualization. Originally, cloud applications relied on a technology called Database Virtualization. Over time, additional virtualization techniques have been developed, including Application Server Virtualization, Java Virtual Machine Virtualization, Kernel Virtualization, and Hardware Virtualization. They all have specific benefits and drawbacks, yet follow a similar pattern: the closer one gets to the hardware level, the more tenant isolation is provided, and the higher memory requirements per tenant become.

Virtualization Level
ExampleProsConsIntalio
Database Virtualization
Salesforce.com
  • Available in 1999
  • Simple to manage
  • Zero RAM overhead
  • Very expensive
  • Does not scale
  • Poor tenant isolation
App. Server Virtualization
Google App Engine
  • Highly scalable
  • Simple to manage
  • Small RAM overhead
  • Limited tenant isolation
JVM Virtualization
Azul
  • Highly scalable
  • Simple to manage
  • Small RAM overhead
  • New technology
Kernel Virtualization
RedHat KVM
  • Cost effective
  • Fairly scalable
  • Good tenant isolation
  • Complex to manage
Hardware Virtualization
VMware
  • Fairly cost effective
  • Fairly scalable
  • Best tenant isolation
  • Large RAM overhead
  • Complex to manage

Database Virtualization

Database virtualization is a technology originally popularized by Salesforce.com. It consists in using a virtual database engine that stores all objects into a set of statically defined tables (3 in Salesforce.com's case). This virtual database engine runs on the application server tier, while making extensive use of the database server's proprietary features in order to provide an acceptable level of performance. The primary benefit of database virtualization is a zero memory overhead per tenant. Nevertheless, since all tenants share the same database server, the latter quickly becomes a scalability bottleneck, and requires the use of expensive Symmetric Multi-Processing (SMP) servers. While database virtualization was the only technology available for multi-tenancy back in 1999 when Salesforce.com was first introduced, better technologies have been introduced since then, and Intalio has no plans of supporting it at present time.

Application Server Virtualization

Application server virtualization is the technology used by Google for App Engine. It consists in providing virtual application server instances to every tenant. When used in combination with an OSGi container (Learn More), application server virtualization offers a very low memory overhead per tenant, and a level of tenant isolation that is acceptable for most applications. Both Intalio|Cloud and Google App Engine rely on Intalio|Jetty for Application server virtualization. This technology is the default lightweight architecture used by Intalio|Cloud for multi-tenancy, in combination with hardware virtualization.

JVM Virtualization

As an alternative to application server virtualization, Java Virtual Machine virtualization can be used in order to provide an additional level of tenant isolation, without adding any memory overhead. JVM virtualization is a new technology developed by Azul Systems (Learn More) that allows virtual Java Virtual Machines to be allocated for every tenant. Another benefit of the Azul platform is the ability to support dynamic heap allocation, thereby removing the significant waste of memory created by the allocation of static heap sizes for Java applications. Intalio|Labs is currently evaluating the Azul Virtual Machine.

Kernel Virtualization

Kernel virtualization is an attractive alternative to hardware virtualization when memory overhead needs to be reduced. Kernel virtualization is currently offered for Linux with KVM (Learn More). It provides a very good level of tenant isolation, while requiring a fraction of the memory needed for hardware virtualization. It also provides significant I/O performance improvements over hardware virtualization. Intalio|Labs is currently working on adding support for KVM.

Hardware Virtualization

Hardware virtualization is the most popular technology for multi-tenancy. It provides the best level of tenant isolation, while remaining fairly cost effective and scalable. Its major drawback is the need to allocate a complete stack for every single tenant (operating system + application server + database), which leads to significant memory overheads. Hardware virtualization also creates significant I/O overhead, usually up to 20%. These are the primary reason why Intalio|Cloud also provides lightweight multi-tenancy through application server virtualization. Intalio|Cloud currently uses VMware vSphere for hardware virtualization. Intalio|Labs is also working on adding support for additional hypervisors, including Hyper-V and Xen.

Multi-Tenancy with Intalio|Cloud

Intalio|Cloud leverages multiple forms of virtualization for the purpose of multi-tenancy. Learn more...