Home > Architecture > Choosing the right multi-tenancy model

Choosing the right multi-tenancy model

There are various approaches to implement multi-tenancy in a SaaS application. We will use Gartner’s vocabulary defined here for this discussion – Reference Architecture for Multitenancy: Enterprise Computing "in the Cloud". For a really short and sweet discussion of these models please refer this blog post – If IT isn’t shared, it isn’t cloud…

Model Hardware / VM Instance Application Instance / Process Database
Shared Nothing No No No
Shared Hardware Hardware (Each tenant gets a VM instance) No No
Shared Database VM Instance No Yes
Shared Processing VM Instance Yes No
Shared Everything VM Instance Yes Yes

Custom multi-tenancy Hand rolled by the application not provided by an application platform

Lets say we are building a SaaS offering on Windows Azure. Windows Azure itself can be categorized as a Shared Hardware Multi-Tenant Platform. It is easy to build a SaaS application in shared hardware model using Windows Azure where each client gets their own compute roles (web and worker roles) and an Sql Azure database. The problem with this approach is that it will work only if each tenant is large enough to warrant a separate compute instance (or a set of load balanced instances).

If each of your tenants is small, lets say you are building an accounting software as a service which will be used by independent accountants 1 tenant = 1 user in this case or small firms with less than 10 accountants. Spinning up compute instances for each tenant may not be economical. It will be wise to use the ‘Shared Processing’ model in this scenario.

Or in other words choosing a multi-tenancy model is not a pure technical decision, it is driven by the market too. If we examine why we are tempted to choose the ‘Shared Hardware’ here is because that’s what is offered out of the box by Windows Azure. Application Platforms which enable ‘Shared Processing’ or the puristical ‘Shared Everything’ are rare?/non existent today in Windows Azure space. Custom multi-tenancy is hard and is not for everyone to build.

  1. Dharnendra
    April 5, 2011 at 3:14 pm

    I do have software at my end which I am deploying on multiple client’s on premises location.Now if I want to use the azure process,do I need to redevelop the software under windows azure? or there is some way to give that software access to client as a service (SaaS).

  2. May 3, 2011 at 12:35 pm

    I would suggest you to check Azure Migration Assessment Tool (MAT) [1] for a start. If you want to quickly SaaS enable a legacy product without a major rewrite, Apprenda SaaSGrid [2] is worth checking out.

    [1] http://blogs.msdn.com/b/hanuk/archive/2011/02/05/windows-azure-migration-assessment-tool-mat.aspx
    [2] http://apprenda.com/

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: