What is multitenancy?
In cloud computing, multitenancy means that multiple customers of a cloud vendor are using the same computing resources. Despite the fact that they share resources, cloud customers aren't aware of each other, and their data is kept totally separate. Multitenancy is a crucial component of cloud computing; without it, cloud services would be far less practical. Multitenant architecture is a feature in many types of public cloud computing, including IaaS, PaaS, SaaS, containers, and serverless computing.
To understand multitenancy, think of how banking works. Multiple people can store their money in one bank, and their assets are completely separate even though they're stored in the same place. Customers of the bank don't interact with each other, don't have access to other customers' money, and aren't even aware of each other. Similarly, in public cloud computing, customers of the cloud vendor use the same infrastructure – the same servers, typically – while still keeping their data and their business logic separate and secure.
The classic definition of multitenancy was a single software instance* that served multiple users, or tenants. However, in modern cloud computing, the term has taken on a broader meaning, referring to shared cloud infrastructure instead of just a shared software instance.
*A software instance is a copy of a running program loaded into random access memory (RAM).
What is cloud computing?
In cloud computing, applications and data are hosted in remote servers in various data centers and accessed over the Internet. Data and applications are centralized in the cloud instead of being located on individual client devices (like laptops or smartphones) or in servers within a company's offices.
Many modern applications are cloud-based, which is why, for example, a user can access their Facebook account and upload content from multiple devices.
What are the benefits of multitenancy?
Many of the benefits of cloud computing are only possible because of multitenancy. Here are two crucial ways multitenancy improves cloud computing:
Better use of resources: One machine reserved for one tenant isn't efficient, as that one tenant is not likely to use all of the machine's computing power. By sharing machines among multiple tenants, use of available resources is maximized.
Lower costs: With multiple customers sharing resources, a cloud vendor can offer their services to many customers at a much lower cost than if each customer required their own dedicated infrastructure.
What are the drawbacks of multitenancy?
Possible security risks and compliance issues: Some companies may not be able to store data within shared infrastructure, no matter how secure, due to regulatory requirements. Additionally, security problems or corrupted data from one tenant could spread to other tenants on the same machine, although this is extremely rare and shouldn't occur if the cloud vendor has configured their infrastructure correctly. These security risks are somewhat mitigated by the fact that cloud vendors typically are able to invest more in their security than individual businesses can.
The "noisy neighbor" effect: If one tenant is using an inordinate amount of computing power, this could slow down performance for the other tenants. Again, this should not occur if the cloud vendor has set up their infrastructure correctly.
How does Cloudflare help companies with cloud deployments?
Cloudflare helps companies with any type of cloud deployment keep their data secure and their web properties fast. The Cloudflare product stack sits in front of any type of infrastructure and makes web properties more secure, more reliable, and faster. To learn more about how Cloudflare integrates with cloud deployments, see How Cloudflare Works with Any Cloud Infrastructure.
How does multitenancy work?
Here we will take a more in-depth look at the technical principles that make multitenancy possible in different kinds of cloud computing.
In public cloud computing
Imagine a special car engine that could be shared easily between multiple cars and car owners. Each car owner needs the engine to behave slightly differently: some car owners require a powerful 8-cylinder engine, while others require a more fuel-efficient 4-cylinder engine. Now imagine that this special engine is able to morph itself each time it starts up so that it can better meet the car owner's needs.
This is similar to the way many public cloud providers implement multitenancy. Most cloud providers define multitenancy as a shared software instance. They store metadata* about each tenant and use this data to alter the software instance at runtime to fit each tenant's needs. The tenants are isolated from each other via permissions. Even though they all share the same software instance, they each use and experience the software differently.
*Metadata is information about a file, somewhat like the description on the back of a book.
In container architecture
Containers are self-contained bundles of software that include an application, system libraries, system settings, and everything else the application needs in order to run. Containers help ensure that an application runs the same no matter where it is hosted.
Containers are partitioned from each other into different user space environments, and each container runs as if it were the only system on that host machine. Because containers are self-contained, multiple containers created by different cloud customers can run on a single host machine.
In serverless computing
Serverless computing is a model in which applications are broken up into smaller pieces called functions, and each function only runs on demand, separately from the other functions. (This model of cloud computing is also known as Function-as-a-Service, or FaaS.)
As the name implies, serverless functions do not run on dedicated servers, but rather on any available machine in the serverless provider's infrastructure. Because companies are not assigned their own discrete physical servers, serverless providers will often be running code from several of their customers on a single server at any given time – another example of multitenancy.
Some serverless platforms use Node.js for executing serverless code. The Cloudflare serverless platform, Cloudflare Workers, uses Chrome V8, in which each function runs in its own sandbox, or separate environment. This keeps serverless functions totally separate from each other even when they’re running on the same infrastructure.
In private cloud computing
Private cloud computing uses multitenant architecture in much the same way that public cloud computing does. The difference is that the other tenants are not from external organizations. In public cloud computing, Company A shares infrastructure with Company B. In private cloud computing, different teams within Company A share infrastructure with each other.