On Multi-TenancyThis 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.
Database VirtualizationDatabase 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 VirtualizationApplication 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 VirtualizationAs 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 VirtualizationKernel 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 VirtualizationHardware 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|CloudIntalio|Cloud leverages multiple forms of virtualization for the purpose of multi-tenancy. Learn more...
|