背景
1960年,许多公司需要使用更多的运算资源,向持有Mainframe的供应商租用运算资源。与此同时,Mainframe的供应商会根据用户登录系统时输入的数据匹配ID,利用ID来计算运算的资源使用量,包含CPU,存储器,软盘或磁带等,此种做法也被SAP公司用在其部分产品线中。
1990年,应用程序服务提供者(application service provider)服务的作法、运作模式与租用大型主机相同,但前者租用的是服务器资源,而后者租用的是软件上的操作系统和应用程序资源,比如:ERP、CRM等应用,系统可能会运行在多台不同的机器上,或是在相同的主机但共享不同的数据库,以区分并计算客户的资源使用量,以此作为计费的标准,而此技术也有效地缩减供应商的实体机器成本。
现在,Web应用程序也是以单一应用程序平台来支持所有用户的,这已经是多租户技术的自然演化的结果,多租户技术也可以让客户中的一部分用户得以进一步定制化他们的应用程序。
在虚拟化(virtualization)技术的成熟与应用性的扩张之下,多租户技术在虚拟化的平台更强化在用户应用程序和数据之间的隔离,让多租户技术能更加发挥它的特色。
定义
多租户技术是指实现了多个企业租户共享同一个应用实例的技术。
实现方式
多租户技术的实现难点是不同租户间的应用程序环境的隔离(application context isolation)以及数据的隔离(data isolation)。
应用程序部分:实现为不同租户提供不同应用程序使用权限,通过进程或是支持多应用程序同时运行的装载环境来做进程间的隔离,或是在同一个伺服程序进程内以运行绪的方式隔离。
数据部分:实现通过不同的机制对不同租户的数据进行隔离,Force是采用中介数据(metadata)的技术来切割,微软MSDN的技术文件则是展示了使用结构描述的方式隔离。
SaaS是多租户技术的应用之一。从架构层面分析,SaaS区别于传统技术的重要差别就是多租户(Muti-Tenant)模式。SaaS多租户在数据存储上存在三种主要的方案,分别是:
1、独立数据库:一个租户一个数据库。这种方案与传统的软件方案相比,优势只是在于软件统一部署在运营商那里,但数据的成本依然没有减少。适用于对数据隔离级别要求非常高的租户,比如:银行、医院等。
优点:数据隔离安全性高,且有助于简化数据模型的拓展设计,满足租户的个性化需求;如果出现故障,恢复数据比较简单。
缺点:维护和购置数据库成本大。
2、共享数据库,隔离数据架构:多个或所有租户共享database,但不同的tenant和schema。
优点:
数据隔离安全性较高,但不是完全隔离;每个数据库可以支持更多的租户数量,降低了数据库成本。
缺点:
如果出现故障,恢复比较困难,因为恢复数据会涉及其他租户的数据;
如果需要跨租户统计数据,存在一定困难。
3、共享数据库,共享数据架构:租户共享一个database、一个schema,在表中通过tenantID区分租户的数据。
优点:
是三种方案中成本最低的方案,允许每个数据库支持的租户数量最多。
缺点:
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;
数据备份和恢复最困难,需要逐表逐条备份和还原。
应用
Salesforce所建置的CRM应用系统是多租户技术在实务应用上成功的案例之一,除此之外还有Salesforce的PaaS就是Force平台及服务,以支持开发人员发展基于Force平台上的应用程序。
在云计算的加持之下,不论是IaaS、PaaS还是SaaS,都可以看到多租户技术的影子。