zobie's blog I create software, I like music, and I'm mildly(?) OCD.

18May/12

Multitenancy in SRS Applications

Over the past few years, SRS has been undergoing an intense technological evolution. A fundamental part of this evolution is the mental transition from being entirely application-centric to instead embrace the principles of SOA and SaaS.

This transition has not been easy and has often lead to confusion. One of the most difficult concepts for us to grok has been that of multitenancy.

Question: What is multitenancy?
Answer: Multitenancy is a software architecture where a single instance of an application serves multiple customers (tenants) simultaneously.

While this concept seems straightforward, many teams have struggled to correctly identify their project's customer (tenant).

Question: Who is the customer (tenant) for my project?
Answer:For all current SRS projects, there are two possible answers:

  1. For external-facing projects, your customer (tenant) is a shop.
  2. For internal-facing products, your customer (tenant) is a project.

Once we have correctly identified our customer, our entire product must be built around that tenant. Our product must protect each tenant by safeguarding their data from any other tenant.

Examples:

  • In Direct-Hit, one shop may not access another shop's customer data.
  • In SRSWP Logger, one project should not have access another project's log files.

Every SRS project must be architected to support multitenancy. I acknowledge that there are circumstances where defining the tenant may seem subjective. If your project has any doubt about whether the tenant has been correct identified, please ask. Any of the architects will be happy to assist.

The success of our SRS platform (including EDGE, Direct-Hit, etc.) hinges on every project correctly implementing multitenancy.

Tagged as: , , , Comments Off