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:
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".