August 13, 2014 | Written by: Sarit Sotangkur
Share this post:
Dear app developers,
If you’ve been in the software as a service (SaaS) game long enough, you’ve undoubtedly heard someone extol the virtues of multitenancy—how it will reduce your bottom line, how all the big name players rely on it for their competitive advantage.
What they don’t tell you is exactly how hard it is to make a multitenant application, how it might affect all aspects of your business and whether you will really need it.
So, what is multitenancy?
In a nutshell, multitenancy is the ability for an application to serve multiple clients using the same instance of software. Your basic web server is a multitenant app.
What’s the big deal?
Well, suppose you add a database to that website and start storing client data. Do you really want one client’s data to be seen by another client? In some cases you might, but in most cases that’s a big no-no, and you may end up with a couple of lawsuits on your hands. Maintaining isolation between clients is one of the most crucial requirements for most multitenant apps.
Then why would I want multitenancy?
Theoretically, if you had to create a new web server and database, find a machine to run them and then repeat that for each client, you’d probably go bankrupt or have to charge your clients a hefty uncompetitive fee. Consolidating these resources and sharing them among the clients improves the utilization efficiency of your hardware and software, thus reducing your costs.
So, now it’s a good thing?
Yes and no. Yes in that it can save you money. I say can because we’re looking at a specific theoretical scenario. We’ll see later that there are other scenarios that make multitenancy much less compelling.
I also say no, because multitenancy may entail several other software requirements that are usually overlooked. For instance, suppose your app can comfortably handle 10 clients. What happens when you get the 11th client, or even the 100th? Suddenly your app now needs to scale out to meet the demands of an increasing number of clients. Will you have to rewrite your software to do that? What about stability? Can you afford to have all your clients go down at once? Now you’re talking about supporting high availability and redundancy. On top of all this, you still might wonder if some hacker will be able to circumvent the isolation you’ve set up between your clients.
And suppose you are up to the challenge of making your app scalable, highly available and very secure. How long will it take you to implement all those features before you can get your app to market? Can you afford to wait that long?
Okay, but what choice do I have?
Let’s remember that multitenancy was born in the age where you had to pay for every server and had to license each piece of commercial software that ran on it. Now, with the advancements in platform as a service (PaaS) and infrastructure as a service (IaaS), you can pay according to how much you use. Or, more important, you can pay according to how much your clients use. Aligning with a PaaS or IaaS vendor allows you to create a full software stack (web server, app server and database) for every one of your clients, and you still only have to pay a fraction of what it would cost to roll out the same stack yourself. Plus you get all the benefits of scalability, high availability and isolation.
Won’t I save even more money if I do multitenancy on top of PaaS or IaaS?
You might, but once you decide to do multitenancy, all those issues we talked about will come back to haunt you even if you run on PaaS or IaaS. Plus, in all likelihood the PaaS or IaaS system that you are using is already multitenant under the covers. Adding another multitenancy layer to the mix is not likely to save you much money since you’re already paying by usage.
I don’t want to give the impression that multitenancy is completely dead. On a large enough scale, it will become cost effective, even over PaaS or IaaS. However, it’s very difficult to gauge how successful an app will become before you make it. There’s no sense in investing lots of time and money for multitenancy until you know for sure that you will hit that scale.
What are your thoughts? Leave a comment to let me know of your own experiences or questions.