Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers. Each customer is called a tenant. Tenants may be given the ability to customize some parts of the application, such as the color of the user interface (UI) or business rules, but they cannot customize the application's code.
In a multi-tenant architecture, multiple instances of an application operate in a shared environment. This architecture is able to work because each tenant is integrated physically, but logically separated; meaning that a single instance of the software will run on one server and then serve multiple tenants. In this way, a software application in a multi-tenant architecture can share a dedicated instance of configurations, data, user management and other properties.
Importance of multi-tenancy
Multi-tenancy has seen a lot of could adoption and is used most with cloud computing. Multi-tenant architectures are found in both public cloud and private cloud environments, allowing each tenant's data to be separated from each other. For example, in a multi-tenant public cloud, the same servers will be used in a hosted environment to host multiple users. Each user is given a separate and ideally secure space within those servers to store data.
Multi-tenancy is also important for the scalability of public and private clouds, and has helped make multi-tenancy a standard. The multi-tenant architecture can also aid in providing a better ROI for organizations, as well as quickening the pace of maintenance and updates for tenants.
Types of multi-tenant architecture
There are three main multi-tenancy model types, all with varying levels of complexity and costs. A single, shared database schema is a multi-tenancy model with a multi-tenant database. This is the simplest form out of the three and is a relatively low cost for tenants because of the use of shared resources. This form uses a single application and database instance to host tenants and store data. Using a single, shared database schema allows for easier scaling; however, operational costs can be higher.
Another multi-tenant architecture includes the use of a single database with multiple schemas. This tenant system uses a single application instance with individual databases for each tenant. In addition, this architecture has a higher cost with more overhead with each database. It is a valuable architecture when data from different tenants need to be treated differently -- such as if they had to go through different geographic regulations.
The third type of multi-tenant architecture hosts data in multiple databases. This model is relatively complex in terms of management and maintenance, but tenants can be separated by a chosen criterion.
Advantages and disadvantages of multi-tenancy
There are a number of advantages and disadvantages that come with becoming a host provider and a tenant with multi-tenancy. Some advantages include:
- It is less expensive when compared to other tenant hosting architectures.
- An offering of pay-for-what-you-need pricing models.
- Tenants don't have to worry about updates, since they are pushed out by the host provider.
- Tenants don't have to worry about the hardware their data is being hosted on.
- Providers only have to monitor and administrate a single system.
- The architecture is easily scalable.
Some disadvantages, however, that come with multi-tenancy include:
- Multi-tenant apps tend to be less flexible than apps in other tenant architectures, such as single-tenancy.
- Multi-tenancy is, in general, more complex than single-tenancy.
- Multi-tenant apps need stricter authentication and access controls for security.
- Tenants have to worry about noisy neighbors, meaning someone else on the same CPU that consumes a lot of cycles, which may slow response time.
- Downtime may also be an issue depending on the provider.
In cloud computing, the meaning of multi-tenant architecture has broadened because of new service models that take advantage of virtualization and remote access. A software-as-a-service (SaaS) provider, for example, can run one instance of its application on one instance of a database and provide web access to multiple customers. In such a scenario, each tenant's data is isolated and remains invisible to other tenants. Multi-tenancy can also be implemented in multi-tier systems such as an SAP system.
Multi-tenant vs. single-tenant
Multi-tenancy can be contrasted with single-tenancy, an architecture in which each customer has their own software instance and may be given access to source code. In single-tenant architectures, a tenant will have a singular instance of a SaaS application dedicated to them, unlike multi-tenancy where there are shared services. Because each tenant is in a separate environment, they are not bound in the same way that users of shared infrastructure would be; meaning single-tenant architectures are much more customizable.
Multi-tenancy is the more used option of the two, as most SaaS services operate on multi-tenancy. In comparison to single-tenancy, multi-tenancy is cheaper, has more efficient resource usage, fewer maintenance costs as well as a potential for larger computing capacity. With a multi-tenant architecture, the provider only has to make updates once. With a single-tenant architecture, the provider must touch multiple instances of the software in order to make updates.
A potential customer would likely choose a single-tenant infrastructure over multi-tenancy for the ability to have more control and flexibility in their environment -- typically to address specific requirements.
How to understand SAP HANA in-memory DBMS