According to the GAE docs on the Multitenancy API:
Multitenancy is the name given to a software architecture in which one instance of an application, running on a remote server, serves many client organizations (also known as tenants).
But isn’t this what every web application is? Dozens, hundreds, maybe even thousands of users all logging in to the system, accessing the same software, but from inside the context of their own “user accounts”? Or is Google’s Multitenancy API some kind of API for developing generic data abstraction layers that can be used as backends for multiple apps?
I guess I don’t get the meaning of a “Google multi-tenant” app, and as such, don’t understand the purpose or usefulness of the Multitenancy API. Thanks in advance for any clarity here!
Multitenancy here doesn’t refer to users of your app as such, but ‘instances’ of your app with ‘separate’ datastores.
They aren’t really separate instances or separate datastores, as those requests might be served by a shared instance and they are definitely talking to the same datastore. However, by using the API you can set up your app so that the data is partitioned into separate namespaces which don’t pollute each other.
If you have only one user on your app, then multi-users and multi-tenanting is pretty much the same thing. If you have multiple users, then generally you’ll be sharing data between the users. If so, you can use multitenancy to share data within only a certain group of users and partition the rest off in their own tenancy.
As jtahlborn rightly states, each of our GAE apps is already a tenant on the GAE infrastructure. We aren’t able to share data between different apps because they are completely partitioned from each other.
As Dave says, we could implement multitenancy ourselves by adding some kind of domain name or partition id to all our data. The API just gives an easier way to do that.