1
votes

All web applications that I helped building were multi-tenant capable, meaning that it is possible to host many clients on the same application / database without having them see each other.

Now that we can spin up new PaaS-instances to host another instance of an application I wondered whether it makes sense to drop multi-tenant awareness and just use one database and one web app per customer.

Advantages that I see are better isolation between the clients and potentially simpler setup & teardown of clients. Disadvantages may arise when we try to generate some inter-tenant reports (this may or may not be required for a specific application).

My question is, is it really a good idea to use cloud concepts to separate clients? Is something like this done for real-world applications?

Btw if it matters, our new application will be built on ASP.NET and hosted as Azure web site, using Cloudant as DB layer. Also, the expected number of clients is a few hundred at most, not millions.

1

1 Answers

2
votes

Now that we can spin up new PaaS-instances to host another instance of an application I wondered whether it makes sense to drop multi-tenant awareness and just use one database and one web app per customer.

While technically you could do it - deploy a separate website for each client, there are a few problems I foresee:

  • Azure has limits as to how many resources you can deploy. For example, under a standard plan you can deploy up to 500 websites. What would happen if you grow beyond 500 customers? Though you can get this quota increased but I doubt if they would make it infinite. For subscription limits, please see this link: http://azure.microsoft.com/en-in/documentation/articles/azure-subscription-service-limits
  • Management will become a nightmare. Assume you have a new feature that you want to make it available to each tenant. In multitenant scenario, you just have to deploy your changes just once. With each tenant having their own instance, you have to deploy for each tenant.