Showing posts with label Multitenancy. Show all posts
Showing posts with label Multitenancy. Show all posts

Friday, July 5, 2013

Multitenancy vs Multi-instance Architecture

Multitenancy Architecture:

Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants).


With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.


Multitenancy is also regarded as one of the essential attributes of cloud computing.


Multi-instance architecture:

Multitenancy is contrasted with a Multi-instance architecture, where separate software instances  are set up to serve different client organizations


As we can see in the below architecture diagram, In case of multi-tentant design, a single hardware is configured with single operating system to server all the clients, but virtually it's partition the data in the database  to avoid the security issues.In certain cases, client might have configured individual databases based upon their requirement.


In multi-instance architecture, on a single hardware server we will be setting up the virtualization software is also called hardware virtualization, on top of it every client can setup their own operating system, application server and end user application. Here, every instance is completely independent of each other.



Architectures




Here are some of the pros and cons of each.

For a multi-instance architecture, the pros are:
  • Cost effective based on the use of common hardware and resources
  • Inherently more secure and isolated environment
  • Greater flexibility and control of configuration, updates and upgrades (timing, content controlled by customer), change management and SLAs
  • Less chance that a provider, user or malicious behavior will impact performance and reliability of multiple customers
  • Investment protection – ability to migrate to premise over time should business needs, preferences dictate
  • Simplicity in software architecture, especially as the number of customers grows
The Cons are:
  • Higher operational effort and cost for providers
  • Requires more hardware in the provider’s data center
  • More provider time and resources required to update/upgrade large numbers of customers
  • Less suited to support consumer scale applications (hundreds of thousands to millions of customers)
  • Requires more billing and contract management overhead
  • Provider has less insight into application usage and behavior across customer base
For a Multi-Tenant Architecture, the Pros include:
  • Cost effective via use of common hardware and resources
  • Requires less hardware in provider data center
  • Less time and resources required to update/upgrade large numbers of customers
  • Better suited to support consumer scale applications (hundreds of thousands to millions of customers)
  • Requires less billing and contract management overhead
  • Provider has greater insight into application usage and behavior across customer base
The Cons are:
  • Higher development/testing effort and cost for providers
  • Inherently less secure and isolated environment
  • More chance that a provider, user or malicious behavior will impact performance and reliability of multiple customers
  • Less flexibility and control of configuration, updates and upgrades (timing, content controlled by provider and applied to all customers simultaneously), change management and SLAs
  • Loss of investment if customer chooses to move to premise over time
  • Complex software architecture to support all users on same instance in a secure and reliable manner, especially as the number of customers grows