Cloud: Multi-Tenant Architecture and it’s Issues
Tags: cloud, azure, cloudcomputing, newbie
Published: 2020-01-13 01:21:08


**What is multi-tenant architecture?** 

`Virtualization + Recource Sharing = Multi-Tenancy`

Multitenancy is a type of computer architecture in which one or more software instances are created and executed on top of primary software. Multitenancy allows multiple users (tenants) to work in the same software environments at the same time at their own user interfaces.
Multitenancy in cloud computing is basically resource sharing; it is a “natural result of trying to achieve economic gain in Cloud Computing by utilizing virtualization” (“Multi-Tenancy inCLoud Computing”, p. 345). 

Some of the types of cloud computing services that exist are: 
•	SaaS/AaaS: Software-as-a-Service
•	PaaS: Platform-as-a-Service
•	IaaS: Infrastructure-as-a-Service [hardware and software available for service]

SaaS uses a highly multi-tenant architecture and the user contexts are separated from one another logically at both runtime and rest. SaaS/AaaS is defined as a software model where both the application and the data are hosted on a cloud by independent developers, which enables a user to access the software when needed from any location. An example of such software would be Microsoft Business Productivity Online Suite, Dropbox, Google Apps, etc. SaaS, in essence, is a software delivery model where a provider or a third party hosts an application and makes it available to customers on a subscription basis where they would not have to commit to long-term contracts and can quit at any given moment when the services are no longer required. In SaaS customers cannot monitor or control the underlying infrastructure. 

SaaS also has two models: simple multi-tenancy and fine-grained multi-tenancy. The simple multi-tenancy means that every user has their own resources that are different from other users. In fine-grained multi-tenancy all resources are shared between users except customer-related data. 

Some advantages of multi-tenancy are: 
•	Same software version is available to all customers
•	Global accessibility
•	Software development and maintenance are done by the provider
•	Provider hosted software is centrally located to be made easily accessible through the web
•	APIs allow for integration between different pieces of software

------------

SaaS and multi-tenancy, while being a powerful business model with many advantages, also has issues and challenges. 


*Security*. Putting your data into someone else’s hands and running your software using someone else’s CPU is a great risk and requires a tremendous amount of trust. Some of the well-known cloud security issues are data loss, hacks, and some others. The multi-tenancy model introduced new security challenges and vulnerabilities that require new techniques to deal with. The examples could be the following: one tenant gaining access to the neighbor’s data, data is accidentally returned to the wrong tenant, or one tenant negatively affecting another in terms of resource sharing. These vulnerabilities can be exploited for personal gain. 

*Performance*. Because SaaS applications reside in different locations, the response time in accessing the may vary from time to time. While cloud infrastructure focuses on enhancing the overall system performance as a whole, it is impossible to predict the response time of a specific application, and in general SaaS applications run at slightly lower speeds than server applications. 

*Interoperability*. Each cloud provider has its own way of how clients, applications and users interact with the cloud. This undermines the development of cloud ecosystems by forcing the clients to be locked in with a particular provider. This prohibits the users to choose from alternative vendors and providers in order to optimize the performance within their company/organization. Proprietary cloud APIs make it extremely difficult to integrate cloud services with an organization’s own existing system, such as an on-premises data center. The goal of interoperability is to create seamless fluid data across clouds and between cloud and local applications.