We all know Enterprises use boxed solutions for meeting most of their IT requirements. However, they also build a good number of (custom) applications to meet specific business requirements. These applications need to exhibit certain architecture capabilities in order to fulfill the technical requirements. Let’s understand what those technical requirements are and what kind of architecture capabilities that may be required.
SaaS vs. Multi-Tenancy:
While multi-tenancy, as an architectural pattern, was born to address SaaS-based applications, its usage has gone beyond SaaS. Today more and more enterprises have started adopting Multi-Tenant architectures for building their custom applications. Therefore, the myth that Multi-Tenancy is only application to SaaS is no more true.
Multi-Tenancy Driving Factor:
Large enterprises are pretty much distributed/organized in one of the following ways,
- By branches
- By geography
- By service line
- By department
This grouping leads to an inherent requirement of being able to identify each group as a tenant, and consequently leading to a multi-tenant hierarchy.
Let’s take an example where the enterprise has a global head office in New York, branch offices in San Jose and Chicago. They also have branches in UK and Australia. Now, the application data has to be accessed and controlled at various levels. An executive from New York office should be able to see the complete bird’s eye view of all sales data, whereas the executive sitting at Chicago branch should be able to see and operate the data that is under the ownership of that branch. On the other hand, Executive from the UK should only see data from their geography.
Data is just one example of numerous things that have to be configured/controlled at the tenancy level. Some of the other tenancy aspects are,
- Access Control
- UI Themes
- Custom fields
- Field validation
- Menu control
- UI Layout
- Field level security
Customer Facing Applications:
Some of the applications might be opened up to customers. This brings in a whole lot of complexity to the application right from security to user management and data segregation. This is also one of the primary factors for enterprises to adopt multi-tenancy, as it provides a natural logical grouping of data and security controls within a tenant (customer). Tenant-hierarchy type of models also helps in representing the customer organization hierarchy thereby limiting the scope of data and access to a single customer.
Traditional Model and Challenges:
In the traditional model, the application was deployed in each location and it was configured to meet the above requirements of that particular location. However, this soon led to a number of issues,
- Multiple instances of application leading to maintainability issues
- Repeated investments on infrastructure
- Challenges in consolidating data
- Investment on enterprise integration tools
Multi-tenancy is a time tested and proven architecture that not only helps in resolving the above challenges but also helps in drastically reducing the operational cost.
Multi-tenancy enables the application with a highly configurable architecture, which helps in implementing the tenant-specific requirements through configuration (rather than code-level customization).
Therefore, Enterprise Architects dealing with custom application development are very interested in multi-tenant frameworks, as that can completely eliminate the architectural complexities and helps in focusing on the core application.