Introduction
Designing Multi-Tenant Applications is not kids TOY to play what insights it requires are as Follows ?
1) Big-Challenge to Solution Architect in taking decisions :
* Functional Decisions :
- a) Inter-Operability : Functional decomposing existing Application to increase Reusability, Gather up large number of Customers.
- b) Tenant-Partitioning : Functional Separation of Data i.e. Adapting exact techniques like Sharding or Federation or Easy Scaling out Methodologies.
* Non-Functional Decisions :
- a) Concern in increasing in Security
- b) Increasing in UserExperience
2) Big-Benefits to Solution Architect in taking decisions :
* Abstracts the inner-laying H/W under Application ( No Maintenance and services of Infrastructure )
* Always head on for Next business requirements
Background
Multi-Tenancy : What Does Exactly Multi-Tenancy mean to me ?
Features of a Software Solution Architecture :
1) Maximize Resource Utilization :
* Diminish Over-Provisioning ( Loss due to Unused resources ,unused Licensing ) or Under- Provisioning ( Losing Clients if Systems are not up @ peak times )
* Maximise Security
How a Traditional Enterprise/ISV Application would look on converting into basic Layered Architecture
Here in the below diagram you can see how a normal application is divided into layered
Benefits of Layering here :
1) Top-Down Control Flow makes every layer to interact make independent calls to Core-Services.
2) Layers are loosely coupled.
3) More Reusability
Thats good decision by Solution Architect but is it sufficient ?
To be Multi-Tenant Application/Architecture ?
Lets see how can we start achieving Multi-Tenancy by changing Certain
How a Traditional Enterprise/ISV Layered Application would look on converting into Multi-Tenant Support Architecture
In the above diagram you can see how to achieve Multi-Tenant Architecture majorly by
1) Web Role : Categorising “Presentation Layer” & “Public Service Layer” i.e. UI (User Interface) & Interfaces Under Web-Server left out to attend Request as it is Exposed to outside world.
Public Service have one more capability like integrating 3rd party tools like :
- a) BizTalk
- b) Hd-Insights
2) Worker Role : Categorising “Service Agreement Layer” & “Domain Services Layer” Under Worker Process. Underlying process which support application to interact with Core Services & Services level changes occur in this Layer.
Points of Interest
Useful links :
http://www.successfactors.com/en_us/why-successfactors/technology/cloud/architecture.html
History
11th Oct 2014 – Was my irst Post on Code-Project
Follow for Part 2 : Designing Multi-Tenant Applications on Windows Azure