Let’s not talk about instances.
One of the things that interests me is approaches to architecting SaaS, Software as a Service. Recently I’ve been thinking about approaches to multi-tenancy; at a very high, “I wonder what… would do”, kind of level – nothing deep, nothing tested (yet).
My thoughts started with the fact that everything is nested in different levels of containers. Each line of our own code runs within some context that we create within our application code, that in turn runs inside a container, this might be the OS or it may Microsoft .Net, the PHP runtime or a J2EE or Servlet container, which in turn runs inside the OS, which in turn runs inside a machine, which in turn runs inside a data center…
In the beginning we wrote software and put it in boxes, the tenants of our software took it away and installed it somewhere. They had to make their own way and isolation of tenants was only a licensing issue. The tenants were responsible for keeping their own installations separate and we only had to ensure that no-one was deliberately sharing systems and not paying us for it. Oracle are pretty much still in this place – using licensing to making sure no-one uses their software that is. Working out how much someone was using the software was a case of counting their CPUs, or employees, or customers or something like that every year or so.
Many tenants have never really been that happy about having to make their own way though, so a whole group of companies sprang up to offer Facilities Management contracts – multi-tenancy at the data center level. Each tenant still had a whole load of machines dedicated to them, but now they were someone else’s problem. Isolating tenants became a problem for sysadmins and network engineers. Usage was still a case of counting CPUs, you just had to be sure to count the right ones.
With so much kit, mostly idle, it was inevitable we’d see forays into virtualization and this is working well, but still isolation is left at the (virtual) machine level, a problem for sysadmins and networking. Usage can still be at the same level as before but there is also the option of starting to pay for the computing power you use as the hardware can now be shared. Costs can go down as the overall usage of the hardware goes up and managing becomes a case of keeping track of contention ratios, well understood from network access at ISPs.
At this point the application still only needs to work with one tenant at a time, all configuration, logic, logging, tracking, and so on is separated by the virtual machines.
Still, there’s a big overhead to running lots of VMs and you can’t really load-balance and so on, although VMWare are making great leaps in this space with the ability to move running VMs from one machine to another.
Finally we start to get close to what I’d really call SaaS. The shared hosting providers. With these providers we start to have multiple applications running inside a single container, the same instance of the operating system, web server and physical machine. A standard package might be Apache, with a virtual host, PHP, MySql and so on. For your own software running multi-tenant you could run one instance per customer inside the container of your choosing: Apache, Tomcat, WebSphere, ASP.Net or Mono perhaps. At this point the application still only needs to know about one tenant inside each instance. Isolation of tenants is handled by the container, usage can be as well. The payback is that there will be an overhead to pay for having several instances of your application running.
Then finally we have applications that are natively aware of multiple tenants. That is to say the application logic has been written to take account of which tenant they’re working for at every step: authentication, access control, data access, configuration, skinning, logging, usage tracking, prioritization and so on. There is only one instance of the application running for all tenants. Or rather, multiple instances are running for reasons of scaling, resilience and load-balancing etc rather than to facilitate multi-tenant running.
So what to do? Which container should I let handle the isolation?
No comments yet.
Leave a comment
Additional comments powered by BackType
Search
What I'm Doing...
- @moustaki, would you recommend an equivalent to music ontology for visual recordings? 20 hrs ago
- @chriskeene Does the uni have it's own local weather system? (http://twitter.com/chriskeene/status/10314171215 and go left) in reply to chriskeene 1 day ago
- @_philjohn should I expect a late arrival then? in reply to _philjohn 1 day ago
- More updates...
Recent Comments
- Patents are Property – Like it or Not « Chasing the Power Curve on When Patents Go Wrong…
- Arizona Joe on Fixing a plasma TV
- alex_turner11 on Ground roundup of new eReaders at CES on CNN
- negative_charge on Hacking Into Your Account is as Easy as 123456
- infopeep on Hacking Into Your Account is as Easy as 123456
- BenenhaleyBrian on The 18 Mistakes That Kill Startups
- Brian Benenhaley on The 18 Mistakes That Kill Startups
- infopeep on The 18 Mistakes That Kill Startups
- Rob Styles on Ruby Mock Web Server
- Jim on Fixing a plasma TV
Categories
- .Net Technical (8)
- Blog on Blog (6)
- commands I have issued (9)
- Enterprise Architecture (19)
- event (4)
- Fiction Book Review (2)
- Food (2)
- Intellectual Property (9)
- Interaction Design (27)
- Internet Social Impact (43)
- Internet Technical (16)
- IP Law (10)
- Library Tech (19)
- Music (2)
- New Toy (4)
- Non-Fiction Book Review (7)
- Ontologies (6)
- Open Data (7)
- Other Technical (20)
- Personal (36)
- Random Thought (16)
- Resourcing (4)
- Review (1)
- Security And Privacy (11)
- Semantic Web (30)
- Software Business (10)
- Software Engineering (37)
- Talis Technical (9)
- Uncategorized (44)
- Working at Talis (26)
- [grid::blogpaper] (8)
- [grid::fatherhood] (4)
Archives
- February 2010 (1)
- January 2010 (4)
- November 2009 (10)
- October 2009 (4)
- September 2009 (2)
- August 2009 (9)
- July 2009 (12)
- June 2009 (5)
- May 2009 (6)
- April 2009 (7)
- March 2009 (3)
- February 2009 (6)
- January 2009 (10)
- December 2008 (4)
- November 2008 (4)
- October 2008 (9)
- September 2008 (23)
- August 2008 (8)
- July 2008 (1)
- June 2008 (1)
- May 2008 (6)
- April 2008 (14)
- March 2008 (3)
- January 2008 (5)
- December 2007 (6)
- November 2007 (13)
- October 2007 (9)
- July 2007 (2)
- June 2007 (1)
- May 2007 (10)
- April 2007 (5)
- March 2007 (11)
- February 2007 (10)
- January 2007 (13)
- December 2006 (8)
- November 2006 (8)
- September 2006 (2)
- August 2006 (1)
- June 2006 (2)
- February 2006 (2)
- January 2006 (3)
- December 2005 (3)
- November 2005 (2)
- September 2005 (2)
- August 2005 (5)
- July 2005 (8)
- June 2005 (3)
- May 2005 (2)
- February 2005 (1)
- January 2005 (4)
- December 2004 (3)
- November 2004 (6)
- October 2004 (2)
- September 2004 (2)
- August 2004 (5)
- July 2004 (1)
- June 2004 (4)
- May 2004 (4)
- April 2004 (3)
- March 2004 (13)
- February 2004 (6)
- December 2003 (3)
- November 2003 (1)
- August 2003 (2)
- July 2003 (1)
- June 2003 (2)
- May 2003 (1)
- March 2003 (1)
- January 2003 (1)
- October 2002 (1)
- May 2002 (1)
- March 2002 (1)
- August 2001 (1)
- May 2001 (1)
- April 2001 (1)
- January 2001 (1)
- December 2000 (1)
- November 2000 (1)
- December 1999 (1)
- November 1999 (1)
- July 1999 (1)