Multitenancy

From Wikipedia, the free encyclopedia

Jump to: navigation, search

Multitenancy refers to a principle in software architecture where a single instance of the software runs on a software-as-a-service (SaaS) vendor's servers, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration so that each client organization works with a customized virtual application instance.

The principle of multitenancy is not universally accepted and supported within the software industry, and this may be a source of competitive differentiation (see below).

Contents

[edit] Adoption

[edit] History of Multitenant Applications

Multitenant applications have evolved from—and combine some characteristics of—two types of services:

  • Dating back to the 1990s, traditional application service providers (ASPs) hosted (then-existing) applications on behalf of their customers. Depending on the limitation of the underlying application, ASPs were forced to host applications on separate machines (if multiple instances of the applications could not be executed in the same physical machine) or as separate processes. Multitenant applications represent a more mature architecture that enables a similar service with lower operational cost.
  • Popular consumer-oriented services (such as Hotmail) were naturally designed as a (cost-effective and scalable) single application instance that serves all customers. Multitenant applications represent a natural evolution from this model, offering additional customization to a group or users within the same client organization.

[edit] Competitive differentiation

Some companies (including Google Apps, Microsoft, ScanSafe, Optenet, Preparis, eXternalTest.com, Salesforce.com, and Digital Insight an Intuit Co., as well as smaller pure play SaaS providers such as FCP's Applicant Tracking System evolve), EcosAgile are actively promoting this principle, and using it as source of competitive differentiation.[1][2]

To date, a majority of discussion around multi-tenancy has come from companies who have implemented it as part of their application architecture. Recent discussion, however, has focused on offering multi-tenancy as a native SaaS enablement construct by SaaS platforms such as Salesforce.com's Force.com and Apprenda's SaaSGrid. These platforms act as hosts to applications that can leverage native multi-tenancy at the platform level without having to explicitly implement a multi-tenancy execution and data architecture.

[edit] Economics of Multitenancy

[edit] Cost Savings

Multitenancy allows for cost savings over and above the basic economies of scale achievable from consolidating IT resources into a single operation.[citation needed] An application instance usually incurs a certain amount of memory and processing overhead which can be substantial when multiplied by many customers, especially if the customers are small. Multitenancy reduces this overhead by amortizing it over many customers. Further cost savings may come from licensing costs of the underlying software (such as operating systems and database management systems). Put crudely, if you can run everything on a single software instance, you only have to buy one software licence. [3] The cost savings can be eclipsed by the difficulty to scale single instance (a bigger faster server can only take you so far) as the demand grows. The cost savings have to be considered in the light of the four levels of SaaS multitenancy maturity, [4]

[edit] Complexity

Because of the additional customization complexity and the need to maintain per-tenant metadata, multitenant applications require a larger development effort.

[edit] Community

Some implementations, like TriActive's have hallways in which communities can share valuable assets and resources. This inter-tenant collaboration is very powerful.[peacock term]

[edit] Requirements

[edit] Customization

Multitenant applications are typically required to provide a high degree of customization to support each target organization's needs. Customization typically includes the following aspects:[4]

  • Branding: allowing each organization to customize the look-and-feel of the application to match their corporate branding (often referred to as a distinct "skin").
  • Workflow: accommodating differences in workflow to be used by a wide range of potential customers.
  • Extensions to the data model: supporting an extensible data model to give customers the ability to customize the data elements managed by the application to meet their specific needs.
  • Access control: letting each client organization independently customize access rights and restrictions for each user.

[edit] Quality of service

Multitenant applications are expected to provide adequate levels of security and robustness, which are provided by the operating system in the case of multi-instance applications.

[edit] Virtualization

The costs of re-designing applications for multi-tenancy can be significant, especially for software vendors who continue to offer an on-premises single-tenant version of their product. They end up being forced to support two distinct products with all the resulting costs.

An increasingly viable alternative route to multi-tenancy that eliminates the need for significant architectural change is to use virtualization technology to host multiple isolated instances of an application on one or more servers. Indeed, when applications are repackaged as virtual appliances the same appliance image can be deployed in ISV hosted, on-premises or trusted-third party locations and even migrated from one deployment site to another over time.

[edit] Notes

  1. ^ Multi-Tenant Data Architecture MSDN Architecture Center, June 2006
  2. ^ Software as a service: The next big thing ComputerWorld 23/03/2006
  3. ^ Conventional Wisdom Alert: Multitenancy (part 1)
  4. ^ a b Architecture Strategies for Catching the Long Tail MSDN Architecture Center, April 2006
Personal tools
Languages