TechEd 2010 - Multi-Tenant Architectures in Software-as-a-Service Solutions
10 November 2010 - time cockpit
Today I will do a session at Microsoft TechEd Europe 2010 in Berlin. You can download the slides here:
In the next few paragraphs I want to quickly summarize the introduction of the talk for those of you who are interested but did not make it to Berlin.
Why should I care?
So why should you even care about this "multi-tenancy" and "Software as a Service" stuff? Isn't that just another hype that will to away? I do not believe so. With the appearance of cloud offerings like Windows Azure the world of software has drastically changed. It has always been a unique characteristic of the software business that you need relatively little financial resources to build great software if you are a smart developer. Most of the tools you need are given away for free. However, if you want to get really rich you have to be able to offer your solution to many, many customers. Think back two or three years - to serve a massive amount of users you had to invest a lot of money upfront into a large IT infrastructure. Load balancers, web farm, database cluster - quite expensive stuff. You had to chances to succeed: Either you have the money yourself or you find someone who places a big bet on your idea/software. With the cloud the rules of the game have changed. Now you can publish your mind-blowing software by spending only a few bucks each month. If the number of users goes through the roof the cloud will grow with you just like a natural skin. The result? More competition than ever!
If you have an existing software solution that you successfully have sold to one customer of a few customers the concepts of multi-tenancy and SaaS can help you to catch the so called "long tail" (see article The Long Tail by Chris Anderson from Wired Magazine). It is about lowering the operation cost of your software to make it affordable for many even smaller customers.
What does multi-tenancy + SaaS mean?
In my session I want to focus on architectures that work for SaaS maturity level 4 (see image below). Such solutions are very different from customly developed software (level 1) or the classical service provider business (ASP; level 2). At level 4 you want to serve a huge amount of customer ("tenants") with an elastic load-balanced infrastructure of instances. All instances run the same code base. You cann add more instances if the number of active tenants grows, you can remove some of them to keep costs low during time of less activity.
SaaS Maturity Levels
Source: Kwok, Nguyen, Lam: A Software as a Service with Multi-tenancy Support for an Electronic Contract Management Application, IEEE International Conference on e-Business Engineering, pp. 179-186, 2008
If you are already familiar with Windows Azure SaaS maturity level 4 will likely ring a bell to you. The Azure platform is perfectly suited to implement level 4 architectures. An elastic number of worker and web roles, load balancing infrastructure, etc. - everything you need is already there.
SaaS Configuration Competency Model
Source: Wei Sun, Xin Zhang, Chang Jie Guo, Pei Sun, Hui Su: Software as a Service: Configuration and Customization Perspectives, in Proceedings of IEEE Congress on Services Part II, 2008
There is a second important point when it comes to multi-tenancy. If you want to reach a lot of customers all over the world not all of them will have exactly the same needs. Your software has to be extensible and customizable. The image above defines five configuration competency models. In my opinion "World class" is reserved for the really big players like Microsoft, SAP, google, etc. If you are not one of them you maybe should not try to play in this field. In my talk I want to assume that you would like to reach "Mature" or at least "Capable" with your multi-tenant SaaS offering.
How can the problems be solved?
After setting the stage with the introduction summarized above I focus on the problems you have to solve to build a highly customizable, multi-tenant SaaS offering. Additionally I want to give you an idea how you could solve them. In fact I mainly report how we decided to solve the problems in our own solution "time cockpit". What has worked, what did not work? Which lessons did we learn?
I will not repeat all the information that is included in the slides that you can download above. If you are interested in the "problems and solutions" section I would like to encourage you to download the presentation and check out slides 17 to 47. If you have additional questions feel free to drop me an email at firstname.lastname@example.org.