Hi Marcel, Some comments regarding your alternatives:
1) Although this seems like an interesting approach, I don't see how we could support full "Tenant awareness" this way. Especially in a SaaS environment where the cloud runs the application of many tenants, I think this approach would lead to major issues. In SaaS I would expect that one Amdatu node hosts an application accessible by a particular set of tenants that bought a license for that application. I wouldn't want to be forced to boot 100 OSGi containers running exactly the same application components since 100 different Tenants are licensed to use it. Instead I would expect each node in the Amdatu cluster running a single Amdatu instance (OSGi container) hosting a particular set of application components for a particular set of Tenants. When 1 tenant expands its license, there would be no need to setup an additional OSGi container/Amdatu instance. In a SaaS environment hosting the application of many many tenants, running an OSGi container on each node in the cluster for each tenant would significantly increase memory footprint/CPU usage/maintenance costs and so on per tenant. Especially when a node runs a very heavy application which is only used occasionally, the overhead of running this app for each tenant would be enormous. And so, I don't think this is the way to go. 2) I didn't attend ApacheCon so it's not very clear to me what this is really about, but so far I don't see it as an alternative, more as an extension to our way of thinking about Tenant awareness. Regards, Ivo -----Original Message----- From: amdatu-developers-bounces at amdatu.org [mailto:[email protected]] On Behalf Of Marcel Offermans Sent: dinsdag 9 november 2010 10:21 To: amdatu-developers at amdatu.org Subject: [Amdatu-developers] Multi Tenancy... I'm not quite sure if we're doing multi tenancy the right way yet. I'm still considering a couple of alternatives here: 1) Running each tenant in its own OSGi container. This does not imply each OSGi container actually runs in its own JVM, as it's easy to create a single JVM that runs multiple, isolated containers. Advantages of this system would be mostly a vastly simplified programming model as you don't need to worry about tenants in your application. If services would need to be shared between tenants, we could use remote services to "deploy them to each container". 2) Using a notion of a tenant that is a bit more abstract, where each tenant (or customer) gets not only simply isolation but also a specific quality of service linked to that tenant. Paul Fremantle talks about this in his ApacheCon presentation on "building cloud native software" (see http://pzf.fremantle.org/2010/11/building-cloud-native-software.html) where he discusses the merits of having "coach, business and private jet" service levels. Greetings, Marcel _______________________________________________ Amdatu-developers mailing list Amdatu-developers at amdatu.org http://lists.amdatu.org/mailman/listinfo/amdatu-developers

