In the last several years I keep hearing the term multi-tenancy being thrown around, and each time I Google its meaning it leaves me confused:(Wikipedia) : The term software multitenancy refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. A tenant is a group of users who share a common access with specific privileges to the software instance.Right. But isn't that already what a server is?!? Software serving multiple clients?!? If I have a VM (or physical server) and start running a web server (httpd, Tomcat, etc.), and that web server starts serving requests for multiple HTTP clients, wouldn't that be a multi-tenant web server? And if I stand up a MySQL database, and that DB starts serving requests for multiple clients, wouldn't that be a multi-tenant DB?!?I guess I don't see the need to distinguish any server as being multi-tenant...isn't that what servers are already meant to do (serve multiple clients)?So I ask: if multi-tenancy is [an] architecture in which a single instance of software runs on a server and serves multiple tenants...then what is its alternative?Or, put differently, how could a server (web server, DB, etc.) not be multi-tenant?!?
Multi-tenancy...as opposed to what?
networking;client server;multitenancy
I think your confusion is between the technical term client (as in client-server) and the business term client (as in, a paying customer). Multi-tenancy usually implies a server serving multiple business clients, each with their own separated environment, using shared hardware and software.For instance, I have several Wordpress blogs running on a single server instance - there's just one WP process running, just one deployment, but several blogs defined, each with its own segregated data store (in this case, set of database tables, a common multi-tenancy technique), so that each blog owner can only manage their own sites, not knowing or caring that it's technically sharing resources and files with other blogs. This is an example of a (simple) multi-tenant service.The technical challenges of multi-tenancy include security (how to make sure one tenant can't see another's data, a big no-no), reliability and robustness (how to prevent one tenant's bugs or plugins from taking down the others, or how to take one tenant offline or backup their data without affecting the others), scalability (how to support a large and dynamic number of tenants without having to migrate the entire server to new hardware when more are added) and provisioning (how to manage, extend, disable and add new tenants without taking down the system).