多租户技术

多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共享相同的系统或程序组件,并且仍可确保各用户间资料的隔离性。

由于云计算议题的发烧,在共享的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制的服务,并且仍然可以保障客户的资料隔离,让多租户技术成为云计算技术下的显学。

历史

多租户技术源于1960年代,许多公司为了要使用更多的运算资源,向持有大型主机(Mainframe)的供应商租用一部分的运算资源,而这些用户经常会用到相同的应用程式,当时会以用户在登录系统时输入的资料来决定用户的账户ID,基于这个ID,Mainframe的供应商即可利用此ID来计算运算的资源使用量,包含CPU,存储器与磁碟或磁带等,这个作法也被SAP公司用在其R/1到R/3的产品线。

到了1990年代,应用程式服务提供者服务(application service provider)模式出现,它的作法与运作模式与租用大型主机时相同,不过租用的资源是在软件上,除了操作系统以外也包含了其上的应用程式,例如ERP系统或是CRM等应用,系统可能会运行在数台不同的机器上,或是在相同的主机但共享不同的数据库,以区分并计算客户的资源使用量,藉以作为计费的标准,而此技术也有效的缩减供应商的实体机器成本(因为可以在一台电脑上同时执行多个用户所租用的应用程式行程)。到了现代,受欢迎的消费者导向Web应用程式(如HotmailGmail等)也是以单一应用程式平台来支持所有的用户,这已经是多租户技术的自然演化的结果,多租户技术也可以让客户中的一部分用户得以进一步定制他们的应用程式。

虚拟化(virtualization)技术的成熟与应用性的扩张之下,多租户技术可以驾驭虚拟化的平台,更强化在用户应用程式与资料之间的隔离,让多租户技术能更加发挥它的特色。

概念与技术

在多租户技术中,租户(tenant)是指使用系统或电脑运算资源的客户,但在多租户技术中,租户包含在系统中可识别为指定用户的一切资料,举凡账户与统计资讯(accounting data),用户在系统中建置的各式资料,以及用户本身的客制化应用程式环境等,都属于租户的范围,而租户所使用的则是基于供应商所开发或建置的应用系统或运算资源等,供应商所设计的应用系统会容纳数个以上的用户在同一个环境下使用,为了要让多个用户的环境能力同一个应用程式与运算环境上使用,则应用程式与运算环境必须要特别设计,除了可以让系统平台可以允许同时让多份相同的应用程式执行外,保护租户资料的隐私与安全也是多租户技术的关键之一。

技术上,多租户技术可以透过许多不同的方式来切割用户的应用程式环境或资料。

  • 资料面(data approach):供应商可以利用切割数据库(database),切割存储区(storage),切割结构描述(schema)或是表格(table)来隔离租户的资料,必要时会需要进行对称或非对称加密以保护敏感资料,但不同的隔离作法有不同的实现复杂度与风险。
  • 程序面(application approach):供应商可以利用应用程式挂载(hosting)环境,于行程(process)上切割不同租户的应用程式执行环境,在无法跨越行程通讯的情况下,保护各租户的应用程式执行环境,但供应商的运算环境要够强。
  • 系统面(system approach):供应商可以利用虚拟化技术,将实体运算单元切割成不同的虚拟机,各租户可以使用其中一至数台的虚拟机来作为应用程式与资料的保存环境,但对供应商的运算能力要更要求。

实现方式

多租户技术的实现重点,在于不同租户间应用程式环境的隔离(application context isolation)以及资料的隔离(data isolation),以维持不同租户间应用程式不会相互干扰,同时资料的保密性也够强。

  • 应用程式部分:透过行程或是支持多应用程式同时执行的装载环境(例如Web Server,像是ApacheIIS等)来做进程间的隔离,或是在同一个伺服程序(server)行程内以线程的方式隔离。
  • 资料部分:透过不同的机制将不同租户的资料隔离,Force.com是采用中介资料(metadata)的技术来切割[1],微软 MSDN 的技术文件则是展示了使用结构描述的方式隔离[2]

特色

多租户技术有下列特色:

  1. 由于多租户技术可以让多个租户共享一个应用程式或运算环境,且租户大多不会使用太多运算资源的情况下,对供应商来说多租户技术可以有效的降低环境建置的成本。包含硬件本身的成本,操作系统与相关软件的授权成本都可以因为多租户技术,而由多个租户一起分担。
  2. 透过不同的资料管理手段,多租户技术的资料可以用不同的方式进行资料隔离,在供应商的架构设计下,资料的隔离方式也会不同,而良好的资料隔离法可以降低供应商的维护成本(包含装置与人力),而供应商可以在合理的授权范围内取用这些资料分析,以作为改善服务的依据。
  3. 多租户架构下所有用户都共享相同的软件环境,因此在软件改版时可以只发布一次,就能在所有租户的环境上生效。
  4. 具多租户架构的应用软件虽可客制,但客制难度较高,通常需要平台层的支持与工具的支持,才可降低客制化的复杂度。

实务应用

多租户技术在实务上运用的成功且广为人知的案例之一,是由Salesforce.com所建置的CRM应用系统,该公司除了Salesforce.com的CRM软件以外,它还建置了Force.com平台即服务(PaaS)架构,以支持开发人员发展基于Force.com平台上的应用程式。

在云计算的加持之下,多租户技术被广为运用于开发云端各式服务,不论是IaaS,PaaS还是SaaS,都可以看到多租户技术的影子。

参考资料

  1. ^ The Force.com Multitenant Architecture (PDF). [2011-11-19]. (原始内容 (PDF)存档于2011-08-17). 
  2. ^ Multi-Tenant Data Architecture. [2010-11-23]. (原始内容存档于2010-11-12).