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

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

Reply via email to