Multi-tenancy

Previous Next

Multi-tenancy is an architectural pattern that enables a single instance of a software application to run on a server and serve multiple customers.

Multiple clients (individual end users and their devices) may access the application on behalf of a specific organisation, team or department. Each such organisation, team or department is a "customer" or tenant of the application.

Multi-tenancy is especially relevant in Software-as-a-Service (SaaS) applications. It can be cost-effective because it allows software development, deployment, maintenance and infrastructure costs to be shared across customers.

The deployment of multi-tenancy is relatively complex. It requires a high level of configurability and a good isolation between the tenants, with respect to security, but also with respect to performance.

To build a USoft SaaS application you need multiple software components:

A database.

Business rules. They are business logic defined in USoft Definer and run in a Rules Engine accessed by a Rules Service. The Rules Service is a Windows service.

Services. They are connectivity interfaces defined in Service Definer, or browser-based user interfaces designed in Web Designer, or both. Services are run in a Server defined in a runtime USoft Service Framework.

Applications built with USoft may combine multi-tenancy features on one, two, or all three of these levels in order to achieve optimal tenant isolation. The chosen architecture depends on:

the number of tenants,

the storage needed per tenant,

the workload per tenant,

the frequency of schema changes,

the customisation level needed per tenant,

cost and budget.

Three possible architecture principles are discussed below. Ongoing monitoring of services will enable you to find the optimal tenant design for your services.

 

 

collapseOwner-based multi-tenancy
collapseTable-based multi-tenancy
collapseService-based multi-tenancy

 

 

See also

Configuration