The shift from a traditional desktop development and deployment model to one where the cloud is the key way to develop, deploy and manage applications is happening. However, when talking to product managers and architects, the importance of multitenancy is still a frequently debated question: “Do I have to be multitenant in my first release?” In this blog post, I would like to help demystify this concept, and also share with you my perspectives on why multitenancy is an important up-front business consideration because it has many downstream technical and financial implications.
Multitenancy refers to the ability of services to be offered to multiple tenants in a way so that each tenant operates as logically isolated while, in fact, using physically shared resources.To make this concept easier to understand, let’s look at an apartment building versus a house:
Sharing for cost reduction and convenience
Living in an apartment allows you (a tenant) to enjoy a nice swimming pool without having the hassle to maintain it yourself. Because you are sharing many of the facilities with other tenants, the total cost of ownership is lower, for example, your property tax. Living in an apartment also means you are implicitly sharing its underlying infrastructure, for example the heating system. These concepts are very similar to sharing your application in the cloud, the more sharing, the cheaper the cost per tenant. Because you are sharing the application, you are also sharing the underlying operating system, hardware, and middleware that the application is running on, including their version.
In addition to cost consideration, there are also other downstream design considerations when deciding to buy a house versus an apartment. For example, what kind of furniture will fit the best, what kinds of pets can you keep? These decisions are similar to the design your product needs to consider for multitenant versus single tenant. How are you going to ensure a tenant’s data is separated from another tenant’s? Do you want to allow each tenant to customize the UI, say, to add their own company logo? The answers to these questions can affect the design of your application.
Sharing and security
You might be thinking: OK, I get this now, but what about security with all this sharing? The more I think about it, the more it seems a little scary-do I really want to be multitenant?
Whether you are living in an apartment or in your own house, you still have your own key so your assets can still be secured in the same way. Sharing a common security infrastructure does not mean that you are less secure, in fact it can be quite the opposite– have you noticed that most apartments have 24×7 on-site security guards? Because you can now onboard more tenants to your solution quickly, you can increase your development budget and afford more advanced security implementations.
In conclusion, cloud computing is a shift from traditional single-tenant approach of software development to a multitenant approach that is scalable and global. Couple this with the mobile transformation across enterprise, collaboration between companies, partners, and friends becomes easier and easier. This reminds me of the urban community gardens—tenants can create a garden of their own choice, but they can also make social connections, build on each other’s ideas and generate more opportunities.
For more technical information about how to transform your solution from single tenant to multitenant, see my article on developerWorks.Photos in order via Flickr: 1, 2, 3, 4, 5.