5
votes

We are planning to use Azure Service Fabric for a data-oriented multi-tenant application. Typically 100+ customers each with 5 - 100 users.

Looking at the documentation, I concluded that the best approach is to use an Application instance for each customer, rather than trying to use Profiles to achieve multi-tenancy.

Is this the best way to go ?

1
Not sure what you mean by Profiles. Also the best approach depends a bit on your specific requirements. Can you elaborate a bit more?Vaclav Turecek

1 Answers

16
votes

An application instance for each customer is a good way to handle multi-tenant situations on a single cluster, yes. There are Service Fabric applications that do this today (Azure DB is a notable one).

Here are some things you get with this approach:

  • Each application instance gets its own process, which means you have process-level isolation per tenant.
  • Each application instance is composed of one or more services, which means you can use a "microservices" architectural style for the application.
  • Each application instance can be created with unique parameters, so you can have various setups for each tenant. For example, you can do things like offer higher availability to certain tenants by using higher replica set size settings for the services in their application instance, or you can offer higher data capacity by using a higher partition count setting for the services in their application instance.

These are generally good things for data-oriented multi-tenant situations but whether or not its the best way to go of course depends on your specific requirements.