What is Multi-Tenancy?

Wikipedia describes multi-tenancy as "a principle in software architecture where a single instance of the software runs on a server (or cluster), serving multiple client organizations (tenants). Multi-tenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multi-tenant architecture, a software application is designed to virtually partition its data and configuration thus each client organization works with a customized virtual application instance."

At Corent Technology, we feel that this definition is a good start, but it must be extended to include resources used for features outside of data management. In multi-tenant environments, it is essential for the applications to "behave" uniquely by tenant. In other words, there is a need to accommodate the different workflows, business processes, rules, and user interface logic of every tenant (customer) as well as "protect" their individual data. This is important for three reasons:

  • Even with simple applications, no two organizations will operate identically.
  • A service provider's ability to deliver a customized application more efficiently than its client can (using an on-premise model) is the value foundation for billing of its services.
  • A service provider must remain competitive. Amortizing its cost of service delivery over an increasing number of tenants (customers) will drive marginal revenue higher.

Before our Multi-Tenant Server™ (MTS), service providers had to write their custom applications and also had to shoulder the burden of creating and maintaining all of the cumbersome and complex logic surrounding tenant (customer) management. The result for most providers was the ongoing maintenance of two separate development organizations: one dedicated to the "application", and one focused on the "platform or infrastructure".