Cloud Computing, Mobile and Other Modern Technologies

Toddy Mladenov

Subscribe to Toddy Mladenov: eMailAlertsEmail Alerts
Get Toddy Mladenov via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Condominium-design-ideasOne 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.

Read the original blog entry...

More Stories By Toddy Mladenov

Toddy Mladenov has more than 15 years experience in software development and technology consulting at companies like Microsoft, SAP and 3Com. Currently he is a CTO of Agitare Technologies, Inc. - a boutique consulting company that specializes in Cloud Computing and Big Data Solutions. Before Agitare Tech Toddy spent few years with PaaS startup Apprenda and more than six years working on Microsft's cloud computing platform Windows Azure, Windows Client and MSN/Windows Live. During his career at Microsoft he managed different aspects of the software development process for Windows Azure and Windows Services. He also evangelized Microsoft cloud services among open source communities like PHP and Java. In the past he developed enterprise software for German's software giant SAP and several startups in Europe, and managed the technical sales for 3Com in the Balkan region.

With his broad industry experience, international background and end-user point of view Toddy has an unique approach towards technology. He believes that technology should be develop to improve people's lives and is eager to share his knowledge in topics like cloud computing, mobile and web development.