While there are some interesting proposals and implementations for multi-tenancy in some applications and systems, I still miss the discussion for multi-tenancy in distributed landscapes.
Okay, a single application is designed to cover a functional scope. Within the scope one major issue is the differentiation of users and tenants. This is hard work to implement smooth with regard to at least data integrity. So all users can get assigned different roles on the system, while all tenants have different data sets but the same role. And they all use the same system/application.
I wonder whether I can easily transfer this “simple” logic to a distributed landscape of autonomously parallel running systems/applications. The longer I think about multi-tenency the more I believe that this is a completely switch of complexity. In a distributed world there are much more dimensions:
First of all, multi-tenancy is not anymore capability of one system or application. Instead, it has to be implemented on top of the “interaction network” of simultaneous acting systems. Additionally, multi-tenancy forces all systems to use the same multi-tenant database in order to stay consistent. Last but not least, the interfaces and internal activities between the distributed systems must ensure to be part of the multi-tenant architecture and platform design.
Additionally, there are probably some serious issues concerning the data integrity in distributed systems – and probably the meta data to be used to assign the content to a single tenant/mandator.
This all seems to be clear and valid, but still there is no “clear” recommendation.
Further related topics are: Abstract the technical implementation from the , data security and data integrity, controlling and dispatching, data management and master data management on tenant-level. How do you draw a clear distinction between multi-user design and multi-tenant design? I asked myself whether it is a good choice to centralize multi-tenant capability in a distributed world *or* to make the multi-tenant functionality a set of attributes for every single object and action provided by the landscape?
Any idea for simplification?