In my recent discussion about SaaS, I get often asked what multi tenancy means.
Here is my “current” take:
In a pure multi-tenant architecture a single instance of the hosted application is capable of servicing all customers (tenants). Unlike more classical web applications or web services “in the cloud” which behave the same way for each requests, a multi-tenant architecture is designed to allow tenant-specific configurations at the UI (branding), business rules, business processes and data model layers. This is has to be enabled without changing the code as the same code is shared by all tenants, therefore transforming customization of software into configuration of softwre. As you can imagine, this drives the clear need for “metadata driven everything”. The other main challenge is being able to co-locate (mingle and “de-mingle”) persistent data of multiple tenants in the same data infrastructure.
In other words, the challenge for the multi-tenant application is to behave as if it was fully dedicated to a single tenant but is actually serving all of them in parallel on the same code base. I call this “you are my #1 customer” approach; which means every customer believe they are the #1 customer but in reality they are all served by a talented customer rep.
The main advantage of this architecture is (at least) twofold (a) the underlying infrastructure is shared, allowing massive economy of scale with optimal repartition of load and (b) because the very costly infrastructure and application development costs are shared, the “enterprise grade” application can be offered to very small businesses as well, permitting to address the long tail of the market.