Multitenant Platforms

The Key to On-Demand Success

At the heart of many of the benefits of the on-demand model is a key innovation—a multitenant architecture in which all users and applications share a single, common infrastructure and code base that is centrally maintained.

In contrast to client/server enterprise applications or mail servers, customers in multitenant applications such as Salesforce, Google Mail, and eBay share the same physical instance and version of an application. Individual deployments of those applications occupy virtual partitions rather than separate physical stacks of hardware and software. These partitions store the metadata that defines each organization’s business rules, fields used, custom objects, and interfaces to other systems.


 

Not All “Software as a Service” Is the Same

Most vendors that advertise themselves as a “hosted service” or “software as a service” simply charge customers to install, configure, and maintain their software as separate customer instances on the vendor’s hardware and at the vendor’s location. Just as with traditional software, these “ hosted services” incur major expenses each time the software is upgraded, because previous customizations are lost and the application has to be redeployed for each customer.

Separating Business Logic and Data

Multitenant architectures provide a boundary between the platform and the applications that run on it, making it possible to create applications whose logic is independent of the data they control.

Instead of hard-coding data tables and page layouts, users define attributes and behaviors as metadata, which functions as the application’s logical “blueprint.” This approach makes it possible for business users—those users most likely to be intimately familiar with the business processes the application is designed to support—to actually create the application by using simple point-and-click tools. In addition to an application’s metadata, these virtual partitions will also store custom code developed with the Force.com Code programming language—ensuring that any potential problems with that code will not affect other customers, and preventing bad code associated with one object from affecting any other aspects of an individual customer’s application.