Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multi-tenancy client-specific customization for SAAS

Hi I have a question related to SAAS model and multi-tenancy.

As far as I know SAAS multi-tenancy application means common functionality for all clients, with some customizations of UI and functionality underNeath.

If I need make for some customers additional client specific-customization , how I can achieve it?

I know about approach of SalesForce

As for answer I apreciate to see you experience with such - customizations under database level, - architecture of backend in general or in - any links for this topic.

like image 690
Alexandr Avatar asked Jun 21 '13 10:06

Alexandr


People also ask

What is Muti tenancy in SaaS?

Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers. Each customer is called a tenant.

What features of the application can be customized in multi-tenant technology?

Tenants can individually customize features of the application, such as: User Interface – Tenants can define a specialized “look and feel” for their application interface. Business Process – Tenants can customize the rules, logic, and workflows of the business processes that are implemented in the application.

What is multi-tenant architecture in SaaS?

What is a multi tenant architecture? Multi tenant architecture is a software architecture in which a single environment can serve multiple tenants using a scalable and resilient architecture. A Multi tenant architecture means that all users share the same database, resources and application information.

What are the three multi-tenancy models?

There are three multi-tenancy models: Database, Schema, and Table. In Database multi-tenancy, the application connects to a database and gets data while the tenancy logic is delegated to the ops layer.


1 Answers

There are the following two ways of customizing a multi-tenant application 1. Presentation tier changes 2. System change.

The following are the typical customization options preferred in web applications in a multi-tenant environment, they are

1) user interface and branding,

2) workflow and business rules,

3) data model extensions, and

4) access control

In which 1 belongs to the presentation tier change and the rest all form the system level change in a multi-tenant application.

MVC is considered as presentation tier customization option where in we have the option of allowing the tenant to have their own theme , logo and custom layout or custom controllers and custom page sections.

For System settings, there are many ways to achieve this, however the following are the most pervasive

  1. Customization at the database level
  2. Customization at the middleware level.

In SaaS app, there are features and implementation. In the case of the later, there will be a tenant specific configuration that governs which implementation to be invoked for the tenant under consideration based on his configuration and then provides the service. These are achieved using a custom dependency injection mechanism which is tenant aware and also will be required a tenant specific configuration that can be consumed during the runtime to facilitate this process.

In the case of (1), the data in the db should be isolated based on the tenant identifier so that the configuration or the metadata are not shared between the tenants in a multi-tenant environment.

So the main components will be

  1. a tenant identifier obtained from a tenant context
  2. multi-tenant datastorage
  3. Tenant specific authentication [form signing / Single SignOn etc..]

IMHO, since your topic is broad, if you can present us more specific areas, we will discuss on their implementation.

Hope this answers your query, please do post your update.

like image 133
Saravanan Avatar answered Oct 24 '22 09:10

Saravanan