On Thu, Oct 24, 2013 at 3:16 PM, Imesh Gunaratne <[email protected]> wrote:
> Hi, > > Today we had an offline discussion on Multi-Tenancy support in Apache > Stratos (incubating) version 4.0.0 with Lakmal and Reka. Please find the > summary of the discussion below. > > *Background* > - Multi-tenant cartridges could be partitioned into clusters by defining > tenant ranges for each cluster. > Example: (Cluster 1 - Tenant Range: 1-100, Cluster 2 - Tenant Range: > 101-200, Cluster 3: Tenant Range: 201-*) > - Each tenant needs to define an id and a domain name. > > *The Challenges* > C1. One of the major challenges when implementing Multi-Tenancy support in > a PaaS is that having a common mechanism to identify the tenant from the > incoming request. Different applications could use different approaches. > C2. The next challenge in Stratos is that sending tenant information > (tenant id and tenant domain name of a given subscription) from Stratos > Manager to Load Balancers. > > *The Proposal for C1* > The idea is to identify the tenant either using tenant id or tenant domain > name. Here the tenant domain name represents the domain name used to > subscribe to a Multi-Tenant cartridge. The following templates illustrates > how an application could send tenant identifier in an URL. > > *Template using Tenant ID:* > <protocol>://<host-name>:<port>/<path>?<tenant-id-identifier>=<value> > Example: > http://subscription1.appserver.cloud-provider.org:8280/login?tenantId=1 > > *Template using Tenant Domain Name:* > <protocol>://<host-name>:<port>/<path>?<tenant-domain-identifier>=<value> > Example: > > http://subscription1.appserver.cloud-provider.org:8280/login?tenantDomain=foo.org > >From LB point of view, we can use both of the above. But from a user perspective (user friendliness), isn't it better to go with tenant domain as the identifier? > > > In the above examples the tenant id and tenant domain name identifiers are > defined as "tenantId" and "tenantDomain". However we could make this > configurable, so that those could be changed for a given Stratos > environment or Multi-Tenant cartridge. > > *The Proposal for C2:* > Currently load balancers receive this information using a common database > which I think is not a scalable option. > Tenant information could be published to a message broker topic and the > load balancers could subscribe to this topic to retrieve the information. > Using this approach we could preserve the loosely coupled nature of the > load balancer. > > Please feel free to add your thoughts. > > Many Thanks > Imesh >
