I attended the Alfresco conference in London in the middle of November and there was a fair amount of talk about Alfresco’s cloud offering that – if it’s not already available – was due to be launched fairly soon. It will be a hosted service and will allow a single instance of Alfresco to host multiple sites (or tenants). This is usually referred to as multi-tenancy. There are a number of different approaches but the simplest one involves sharing the same database; at the database level you can think of each entry in a table, e.g. forum posts, having something like a site ID column that indicates which site the entry belongs to.
I started thinking about it and I don’t get it. I understand technically how multi-tenancy works; I just don’t see the benefits of making an application multi-tenant aware! With the advancements in virtualisation technology made in recent years, why not just get a couple of servers, install some virtualisation software and create a virtual instance for each site?
I can imagine that the development effort required in making an application multi-tenant aware is non-trivial – this implies a significant monetary cost in terms of the number of developers working on it and the time it takes to develop – and then there is the potential security risk of tenant data being exposed to other tenants due to bugs in the software. It could happen, you never know! Presumably you will also need to maintain a separate version of the application that doesn’t support multi-tenancy (?)
I guess upgrades would be easier – you would only have to do it once as opposed to having to upgrade each virtual instance.
It just seems to me to be much simpler to go down the virtualisation route. You don’t need to do anything to the application, all you need to do is install some virtualisation software and off you go. Obviously I’m over simplifying it but you get the idea. Perhaps I have missed something. I would be interested to know what you think.
 I realise it’s not fashionable nowadays to actually buy/rent your own dedicated servers as everything has to be in the “cloud”!
– if you have 10 small companies who want to use Alfresco Enterprise you can give them 10 virtual machines and pay for 10 Alfresco CPUs or you can use multi-tenancy and pay for 1-2 CPUs for all 10 SMALL companies.
– configuration upgrades, Alfresco upgrades
But of course you will have problems with things like shared business processes or content models. I don’t know how to restrict the usage of content models of one company by users of another companies.