多租戶技術

多租戶技術（）或称多重租赁技术，是一種軟體架構技術，它是在探討與實作如何於多用戶的環境下共用相同的系統或程式元件，並且仍可確保各用戶間資料的隔離性。

由於雲端運算議題的發燒，在共用的資料中心內如何以單一系統架構與服務提供多數用戶端相同甚至可客製化的服務，並且仍然可以保障客戶的資料隔離，讓多租戶技術成為雲端運算技術下的顯學。

歷史

多租戶技術源於1960年代，許多公司為了要使用更多的運算資源，向持有大型主機（Mainframe）的供應商租用一部份的運算資源，而這些用戶經常會用到相同的應用程式，當時會以使用者在登入系統時輸入的資料來決定用戶的帳戶ID，基於這個ID，Mainframe的供應商即可利用此ID來計算運算的資源使用量，包含CPU，記憶體與磁碟或磁帶等，這個作法也被SAP公司用在其R/1到R/3的產品線。

到了1990年代，應用程式服務提供者服務（application service provider）模式出現，它的作法與運作模式與租用大型主機時相同，不過租用的資源是在軟體上，除了作業系統以外也包含了其上的應用程式，例如ERP系統或是CRM等應用，系統可能會運行在數台不同的機器上，或是在相同的主機但共享不同的資料庫，以區分並計算客戶的資源使用量，藉以作為計費的標準，而此技術也有效的縮減供應商的實體機器成本（因為可以在一台電腦上同時執行多個用戶所租用的應用程式行程）。到了現代，受歡迎的消費者導向Web應用程式（如Hotmail或Gmail等）也是以單一應用程式平台來支援所有的使用者，這已經是多租戶技術的自然演化的結果，多租戶技術也可以讓客戶中的一部份使用者得以進一步客製化他們的應用程式。

在虛擬化（virtualization）技術的成熟與應用性的擴張之下，多租戶技術可以駕馭虛擬化的平台，更強化在用戶應用程式與資料之間的隔離，讓多租戶技術能更加發揮它的特色。

概念與技術

在多租戶技術中，租戶（tenant）是指使用系統或電腦運算資源的客戶，但在多租戶技術中，租戶包含在系統中可識別為指定用戶的一切資料，舉凡帳戶與統計資訊（accounting data），用戶在系統中建置的各式資料，以及用戶本身的客制化應用程式環境等，都屬於租戶的範圍，而租戶所使用的則是基於供應商所開發或建置的應用系統或運算資源等，供應商所設計的應用系統會容納數個以上的用戶在同一個環境下使用，為了要讓多個用戶的環境能力同一個應用程式與運算環境上使用，則應用程式與運算環境必須要特別設計，除了可以讓系統平台可以允許同時讓多份相同的應用程式執行外，保護租戶資料的隱私與安全也是多租戶技術的關鍵之一。

技術上，多租戶技術可以透過許多不同的方式來切割用戶的應用程式環境或資料。

 資料面（data approach）：供應商可以利用切割資料庫（database），切割儲存區（storage），切割結構描述（schema）或是表格（table）來隔離租戶的資料，必要時會需要進行對稱或非對稱加密以保護敏感資料，但不同的隔離作法有不同的實作複雜度與風險。
 程式面（application approach）：供應商可以利用應用程式掛載（hosting）環境，於行程（process）上切割不同租戶的應用程式執行環境，在無法跨越行程通訊的情況下，保護各租戶的應用程式執行環境，但供應商的運算環境要夠強。
 系統面（system approach）：供應商可以利用虛擬化技術，將實體運算單元切割成不同的虛擬機器，各租戶可以使用其中一至數台的虛擬機器來作為應用程式與資料的保存環境，但對供應商的運算能力要更要求。

實作方式

多租戶技術的實作重點，在於不同租戶間應用程式環境的隔離（application context isolation）以及資料的隔離（data isolation），以維持不同租戶間應用程式不會相互干擾，同時資料的保密性也夠強。

 應用程式部份：透過行程或是支援多應用程式同時執行的裝載環境（例如Web Server，像是Apache或IIS等）來做行程間的隔離，或是在同一個伺服程式（server）行程內以執行緒的方式隔離。
 資料部份：透過不同的機制將不同租戶的資料隔離，Force.com是採用中介資料（metadata）的技術來切割，微軟 MSDN 的技術文件則是展示了使用結構描述的方式隔離。

特色

多租戶技術有下列特色：

 由於多租戶技術可以讓多個租戶共用一個應用程式或運算環境，且租戶大多不會使用太多運算資源的情況下，對供應商來說多租戶技術可以有效的降低環境建置的成本。包含硬體本身的成本，作業系統與相關軟體的授權成本都可以因為多租戶技術，而由多個租戶一起分擔。
 透過不同的資料管理手段，多租戶技術的資料可以用不同的方式進行資料隔離，在供應商的架構設計下，資料的隔離方式也會不同，而良好的資料隔離法可以降低供應商的維護成本（包含設備與人力），而供應商可以在合理的授權範圍內取用這些資料分析，以作為改善服務的依據。
 多租戶架構下所有使用者都共用相同的軟體環境，因此在軟體改版時可以只發布一次，就能在所有租戶的環境上生效。
 具多租戶架構的應用軟體雖可客制，但客制難度較高，通常需要平台層的支援與工具的支援，才可降低客制化的複雜度。

實務應用

多租戶技術在實務上運用的成功且廣為人知的案例之一，是由Salesforce.com所建置的CRM應用系統，該公司除了Salesforce.com的CRM軟體以外，它還建置了Force.com平台即服務（PaaS）架構，以支援開發人員發展基於Force.com平台上的應用程式。

在雲端運算的加持之下，多租戶技術被廣為運用於開發雲端各式服務，不論是IaaS，PaaS還是SaaS，都可以看到多租戶技術的影子。

參考資料

雲端運算
軟體架構
軟體工程