SaaS or Software as a Service is definitely catching up as the modern day business model. Before getting into the details of different ways of building a SaaS based application let us briefly warm-up with “Why SaaS”. SaaS architecture is increasingly being adapted to divert the software deployment and software maintenance responsibilities to the service providing enterprises. This makes the resources available for other projects in pipeline. SaaS approach is like a driver that provides software as a service on internet to reasonably large enterprises. The reason of its trending implementation is that it facilitates enterprises of multi-tenancy, scalability and a distributed data architecture where the tenants are not just individual customers, they could be different software distributors from any part of the world or they could be virtual tenants as well.
Whether creating a SaaS application or migrating from another web application into a SaaS application, it has always been a technical challenge to develop a full-fledged SaaS based application. To serve the purpose of Multi-Tenancy through which a single instance of software deals with the database of multiple organizations dealing with their distinct requirements simultaneously is one the biggest challenges. There is no denying from many technical challenges that are involved while developing a new SaaS application or migrating from a web application to SaaS based application.
Data of any kind, like customer details, product details, services, etc. are important for any organisation. And handling data efficiently is the core of SaaS architecture. Thus SaaS data architecture is what you have to trust on for its robustness and safety.
Three main Approaches of Building a Multi-Tenant SaaS Application
When data is such an important thing to consider in any business then managing data of different customers through a single application would require us to create data architecture capable of handling multiple tenants efficiently.
Separate Databases for Each Tenant
Even though the resources and basic application is being shared by multiple tenants, they have unique set of data that is different from the data of other tenants. In a meta-data based SaaS architecture, number of tenants, their nature and unique needs plays an important role for data architecture. Metadata architecture monitors, manages and configures each database to its tenant and avoids any accidents. Together with a strong database management services, the tenants are manages based on priority with the help of application pooling.
Shared Database with Separate Schemas
Here a single database accommodates multiple tenants. Each tenant has their own set of tables that are grouped together by a tenant specific schema. A reserved set of tables are created and associated with the schema of a tenant as soon as he subscribes to the application service. This approach offers a limited amount of data-isolation from the security point of view. This way a single database can serve a large number of tenants. However, in case of system failure, it becomes difficult to restore tenant specific data as you have to restore data of all the tenants.
Shared Database with Shared Schema
In this approach, we use a single database to accommodate the data of all the tenants with the same set of tables, indentified using a unique ID field. This shared schema approach allows us to serve the maximum number of tenants using a single database. Although the backup cost is lowest in this approach, security of the data becomes the biggest challenge here.
Thus each of the three approaches of building the SaaS application has their own benefits and adverse effects. An architect should consider various things like security, financial and tenant requirements among others while designing a multi-tenant application.