Before we dive into Multi-tenant SaaS application, let’s talk about what is SaaS and why do you need it?
SaaS applications are cloud based solutions hosted on cloud by third party where customers pay the the rent for using it instead of worrying about underlying infrastructure, upgrades for the software, etc. Some very popular applications which may have used in your company already are Atlasian (JIRA, Confluence), Slack, Datadog, etc…
It’s one of three main categories of cloud computing (IaaS, PaaS, SaaS) offerings. SaaS offers many potential advantages to customers over the traditional models of business software installation, including: Lower up-front cost, Quick to set up, Easy Upgrade, Accessibility, and Scalability.
Multi-tenant SaaS Applications:
Multi-tenant SaaS applications uses same application and database layers to run applications for multiple tenants (organizations/customers).
As for the data, each set of data is tagged as belonging to each customer to segregate and secure the data for each customer.
Today, SaaS application developers, as well as businesses, aim for the most cost-effective as well as an efficient approach for SaaS application development. That is why multi-tenant SaaS architecture is preferred over single tenancy.
When it comes to design, it’s not easy. Let’s look into some challenges of designing multi-tenant applications:
Tenant Isolation: Needed to keep one customer data separate from others. Failing to do so can bring the whole business down.
Customization: Supporting the customer (tenant) tenant specific customization.
Development & Operational Complexity: Schema changes, Restoring or Scaling tenant specific configurations.
Scalability: Flexibility to change subscriptions/plans for customers as and when need changes.
There are many patterns suggested by experts, and you can also come up with your own. But I would recommend only two patterns:
One database per tenant:
Single multi-tenant database: