|By Toddy Mladenov||
|June 3, 2013 10:19 PM EDT||
One of the biggest benefits the cloud offers is the ability to colocate customers and applications on the same hardware in order to improve the efficiency through resource utilization. This type of colocation is referred as multi-tenancy however the term becomes overloaded and it is crucial to understand the different types of multi-tenancy out there. This is especially important when you are building your private cloud because your goals may differ from those of the public cloud providers who try to satisfy the requirements of a much broader audience.
Now, let's look at the different options that are available.
Multi-Tenancy at Infrastructure Level
One of the most common approaches of multi-tenancy is the one implemented at the infrastructure level. This is the widely popular IaaS (Infrastructure-as-a-Service) approach, where you can host multiple customers and/or applications on the same hardware by using separate virtual machine for each. The benefits of this approach are:
- Maturity - virtualization has been used for a while already and the technology and the tooling available is pretty advanced
- Easy to implement - there are many out of the box products available on the market that can get you up and running pretty fast
- Legacy app support - you will be able to run legacy apps that are not cloud-enabled with little migration effort
However there are quite some disadvantages of this approach that you need to take into account:
- Decreased infrastructure efficiency - in order to run multiple VMs on the hardware you need to 1. use a hypervisor to run those and 2. install separate kernel on the guest VM; both of those use part of the resources on the machine for their own needs leaving less for your application
- Increased license costs - the hypervisor and the guest operating systems may require additional licenses, which increases your capital expenditures
- Higher maintenance costs - with the sprawl of VMs that you have you will need more time to update, patch and troubleshoot your environment
- Developer unfriendly - although it solves the machine provisioning problem it may not solve the application deployment and maintenance problems and it will continue to impact your time-to-market. One note here is that there are quite a few tools available on the market that you can use for application provisioning automation however their integration with the underlying VM management software is still not mature enough
Multi-Tenancy at OS Level
The next option you can choose from is to use application containers for multi-tenancy. This is more advanced approach where you use containers that run on the same operating system and ensure access only to resources allowed for the application. There are several benefits to this approach compared to the IaaS one:
- Higher density - because you don't need to run a hypervisor and separate kernels for your application you can deploy more useful workloads on the machine compared to the IaaS approach; the overhead for running the container is much smaller
- Lower licensing and maintenance costs - there isn't anymore the need to pay for hypervisor and guest OS licenses; the license cost for the container management software is comparable to the license cost for IaaS management software that does not include hypervisor and guest OS licenses
- Developer friendly - because the containers are specialized pieces of software that target specific types of applications they already come with a complete application stack (like J2EE, IIS/.NET etc.) and application deployment support
- Application Standardization - because the platform itself takes care of the application stack build-up you can achieve high level of standardization between applications; in addition the platform may offer standard services that can be used by each application
Some of the disadvantages of the containers approach are:
- Limited legacy app support - containers are well-suited for deployment of applications that are developed with service-oriented approach in mind (SOA); legacy applications that assume certain machine or OS dependencies may require significant efforts to migrate
- Maturity - the containers approach is new compared to the virtualization one however it is picking up speed fast and you can expect to see more in the coming months and years; the tools support and the integration with the underlying infrastructure can also be limited
Multi-Tenancy at Application Level
Last but not least is the approach where you implement multi-tenancy in the application itself. Although this is the approach where you will achieve the highest density of your infrastructure there are certain disadvantages:
- Very costly - in addition to the actual functionality of the application it needs to also be instrumented for resource management, which can become a significant work item
- No standardization - each multi-tenant application ends up implemented differently because there are no standard infrastructure services that can be used
- High maintenance costs - because each application has a different approach to implement the resource management the maintenance costs grow with each new application
Having good understanding of the multi-tenancy options is crucial when you make a decision for your private implementation. Weighting out the options and getting feedback from various stakeholders in your enterprise - developers, operations, business - will help you make the best choice for your cloud strategy.
- Why Shutting Down TechNet Is Not a Problem for IT Pros
- Open Source in the Cloud - How Much Should You Care?
- Is Your Cloud Ready for the Enterprise?
- Business Strategy for Enterprise Cloud Startups
- The Importance of Private Clouds
- Cloud Computing Service Models
- Are There Other "as-a-Service" Cloud Offerings?
- Essential Cloud Computing Characteristics
- How Do You Choose Your Cloud Provider?
- There Is More to PaaS Than You Think