With the proliferation of cloud computing platforms, organizations are increasingly looking to host analytics applications on shared IT infrastructure. Businesses and software developers aiming for a modern and efficient approach for SaaS application development are increasingly looking towards a multi-tenant architecture that leverages shared resources and offers optimum efficiency and lower costs.
Organizations deploying SaaS applications want to find a low cost, highly efficient way to deliver functionality that's common across the customer base. It should also provide a customized user experience through automation, and artificial intelligence and machine learning-driven software.
Organizations choose multi-tenant architectures to tap into its widely recognized business benefits, which include:
- Lowering the cost of investment from sharing resources like servers, data storage, and software applications
- Lowering the cost of ownership through easy maintenance during periodic updates and upgrades due to centralized technology stack across all users
- Economies of scale for optimized performance, high efficiency, and reliability for all users through shared infrastructure
- Convenient and quick onboarding experience for tenants through automation and self-service
- The benefits of horizontal and vertical scalability enables all tenants to leverage increased hardware capacity
The most important item to determine before designing a multi-tenant application is the level of sharing or isolation that is required for the specific use case. Multitenancy is not necessarily an “either-or” proposition, in which an environment is either uniformly shared or isolated in all aspects. Rather, there is a spectrum of multi-tenant architectures with varying levels of sharing and isolation at different levels of the infrastructure.
In our experience, there are three primary levels at which sharing or isolation should be configurable, each of which have implications on the features and capabilities of the analytics platform.
Each tenant’s reporting data source or data warehouse may be its own database (on the same database server or on different database servers) or in a shared database using tenant keys or partitioning to segregate data. Some dimensions may be shared, while others may be tenant-specific. The separation of each tenant’s warehouse is typically based on business needs. For some SaaS applications, keeping tenant data in separate databases is a must for their customers.
- To securely share data sources across tenants, the analytics application must automatically take advantage of tenant specific partitioning mechanism in the underlying data source
- For shared database servers with data across all tenants, the analytics platform should support data source level security filtering and generate queries that read only the data accessible to the tenant that a user belongs to
- In cases where each tenant has its own isolated database server, the analytics platform should be able to query the right database server, depending on the tenant that a user belongs to, without the need to duplicate reports or database connections
- In use cases where you have a shared database along with some isolated data sources, the analytics layer should efficiently source data from these multiple sources while maintaining data security
Depending on the application complexity, homogeneity of application schema, and tenant specific requirements, tenants may share one or more applications (analytics projects), or they may have their own customized applications. You may decide to isolate applications to have finer control over its governing parameters or certain application settings depending on the tenant’s specific SLA.
- The analytics platform needs to provide flexibility in terms of deploying shared or isolated applications in the same environment
- The analytics platform should provide tools that make it easy to manage updates and upgrades across shared or isolated tenants
- The analytics platform should provide fine-grain control over the access of reports and folders so you can create private folder or customized reports that are only visible to specific tenants
Irrespective of whether tenants share the same application or have individual application instance, they may need separate application servers. In this case, you are essentially operating on a separate analytics environment for each tenant. Some tenants may need dedicated application servers for a certain set of users, while others may share the same set of application servers. This helps to facilitate rolling upgrades, limit the impact of potential issues, manage application scale, and guarantee quality of service through dedicated resources.
- The analytics platform needs to have built-in clustering capability to share a set of servers across a large number of tenants
- The application server needs to be able to host multiple tenant-customized projects on a single or set of servers
- To meet these requirements, the analytics platform should provide tools to synchronize upgrades and updates in a programmatic way across different servers
- The analytics platform should dedicate a specific amount of server level memory and processing power for specific applications
For more considerations and best practices for system design and ongoing operations in a multi-tenant environment, download this whitepaper.