多承租的主要優(yōu)點是具有成本高效性。在承租者之間共享軟件、硬件、應用程序開發(fā)和維護成本可以降低每個承租者的成本。而且,在承租者之間共享應用程序的單個實例可以提供其他好處,例如,當升級應用程序時,所有承租者可以同時升級。
不過,多承租也會帶來潛在的問題,如:
隔離:因為承租者共享軟件和硬件的同一實例,所以一個承租者可能會影響其他承租者的軟件的可用性和性能。例如,如果共享的軟件沒有充足的安全保障措施,則可能會發(fā)生因一個承租者關閉共享軟件而導致對共享該實例的所有承租者拒絕服務。
安全性:如果共享軟件沒有充分的安全保障措施,則一個承租者的用戶可能會訪問屬于另一個承租者的數據。
自定義能力:因為軟件是在承租者之間共享的,所以各個承租者不可能自定義該軟件。例如,在沒有充足的擴展點的情況下,一個承租者不可能為業(yè)務流程提供自己的實現。
應用程序升級將為承租者帶來問題:同時升級共享的軟件可能并不是所有承租者都希望的。
恢復:在承租者之間共享數據庫使得很難為每個承租者單獨備份和恢復數據。
雖然可以使用多種方法構建多承租體系結構,但本文主要介紹能夠共享中間件和數據庫的單一實例以及在多個承租者應用程序之間進行共享的技術。
多承租的其他方法包括操作系統(tǒng) (OS) 級別的虛擬化。例如,VMWare、Xen 或 OpenVZ 允許操作系統(tǒng)的多個虛擬實例在共享的硬件實例上運行。每個虛擬操作系統(tǒng)實例可以執(zhí)行不同承租者的軟件。另一種方法是為每個承租者建立操作系統(tǒng)級別的邊界。例如,每個承租者的應用程序可以在 IBM WebSphere? Application Server 的新實例(不同的操作系統(tǒng)進程)中運行。
多承租技術面臨的挑戰(zhàn)
可以根據面臨這些挑戰(zhàn)的主要組織和角色對多承租應用程序的技術挑戰(zhàn)分類:解決方案開發(fā)人員和服務提供者。
解決方案開發(fā)人員面臨的技術挑戰(zhàn)包括:
訪問控制:如何在承租者之間共享應用程序資源(例如,虛擬門戶、數據庫表、工作流、Web 服務和 Java? 2 Platform Enterprise Edition (J2EE) 構件),以便只有屬于承租者的用戶可以訪問屬于該承租者的實例?例如,如何確保其他銀行(如北卡羅來納州第一銀行)的用戶不能訪問加拿大第二銀行的資源(如虛擬門戶)?
自定義能力:
數據庫:在一個承租者不影響其他承租者的情況下,如何自定義共享的數據庫模式?例如,在不影響北卡羅來納州第一銀行的模式定義的情況下,加拿大第二銀行如何將新的數據字段引入客戶概要的共享數據庫表?
用戶界面:如何僅通過配置來自定義網站外觀(即,在不更改代碼的情況下)?例如,如何確保北卡羅來納州第一銀行和加拿大第二銀行的銀行管理員可以配置不同的設計,并在其客戶概要 Portlet 中顯示其他字段?
業(yè)務邏輯:在不進行代碼更改的情況下,如何允許為每個承租者自定義業(yè)務邏輯?例如,北卡羅來納州第一銀行如何使用不同于加拿大第二銀行的最小信用記錄自動拒絕貸款申請?
工作流:您如何讓承租者銀行在共享的工作流中自定義人工任務和其他有條件任務的分配?例如,北卡羅來納州第一銀行如何確保將共享工作流中的貸款審批任務僅分配給北卡羅來納州第一銀行的員工?
承租者預置:如何自動執(zhí)行新承租者的預置?例如,如何使用非常少的手動步驟(即如何自動化創(chuàng)建新的 LDAP 子樹或數據庫、創(chuàng)建新的虛擬門戶、部署 portlet 的新實例和注冊新的 IBM DB2? XML 模式之類的步驟)引入新銀行(例如 Fairfield Trust 第三銀行)?
基于使用情況的測定:如何記錄服務的使用情況,以便僅根據服務使用情況向每個承租者收取服務使用費?例如,銀行服務提供者管理員如何測定承租者北卡羅來納州第一銀行和加拿大第二銀行的服務使用情況,以及他們的客戶調用貸款申請服務的次數?
服務提供者面臨的技術挑戰(zhàn)包括:
數據庫共享、自定義、備份和特定于承租者的數據的恢復:服務提供者如何基于性能、管理和可擴展性標準在不同的數據庫劃分模式之間進行選擇?例如,服務提供者如何滿足從多個承租者之間共享的表僅備份自己數據的加拿大第二銀行的災難恢復要求?
快速支持現有 Web 服務的多承租:如何在很少或不進行代碼更改的情況下使單個承租者的 Web 服務支持多承租?例如,在不對 Web 服務接口和實現進行代碼更改的情況下,如何使單個承租者的信用審核服務支持多承租?
在大型企業(yè)中管理大量的第三方服務提供者和部門服務客戶之間的連接性:在 Web 交付的應用程序中,大型企業(yè)中的業(yè)務部門 (LOB) 表現了承租者的許多特征。同一企業(yè)中不同的業(yè)務部門可以使用來自不同的第三方或內部服務提供者的服務。在企業(yè)中,大量的此類服務提供者可能導致中心 IT 部門的管理問題。例如,銀行服務提供者企業(yè)中的不同業(yè)務部門(如信用額度和抵押貸款部門)可能使用不同的信用審核服務提供者。中心 IT 部門如何監(jiān)視、授權和測定企業(yè)中不同業(yè)務部門的多個信用審核服務的使用。
可伸縮性改進了硬件使用情況和特定于承租者的服務質量 (QoS):服務提供者如何改進在不同承租者之間共享的硬件使用和提供可紳縮性?服務提供者如何為不同的承租者提供不同的服務質量?例如,您如何滿足有別于加拿大第二銀行的服務質量需求,以便使用專用硬件承載其服務并收取較高的服務使用費用?
解決多承租技術問題的模式
您可以應用多項 SOA 技術解決與多承租相關的技術問題。
面向解決方案開發(fā)人員的模式
從小處入手,使用基于標準的入門級中間件:本系列的后續(xù)文章將介紹如何使用 IBM 的入門級中間件開發(fā) Web 交付的多承租應用程序。此入門級的中間件產品組件包括 IBM WebSphere Application Server Community Edition、IBM DB2 Express-C 和 OpenLDAP。為入門級產品組件開發(fā)的解決方案可以向服務提供者提供從 IBM 購買支持的選項。觀看演示和下載示例代碼,獲取使用入門級產品組件構建的應用程序。圖 2 描述了示例多承租應用程序的不同功能層。本系列的后續(xù)文章將介紹如何將入門級產品組件與一些企業(yè)級產品組件(如 IBM Tivoli? Usage and Accounting Manager 和 WebSphere Application Server, Extended Edition)合并,以支持測定、可伸縮性和隔離。
圖 2. 使用 IBM 中間件構建的示例多承租應用程序中的功能層
提升為企業(yè)級中間件:雖然從入門級產品組件著手非常容易,但是通常不能夠很好地解決高級功能、可伸縮性、性能和集成等問題。因此,要構建任務關鍵型 Web 交付應用程序,最好使用企業(yè)級中間件。在記錄的一系列演示(您可以從 SaaS 演示系列訪問)中,我們描述了用來開發(fā) Web 交付的多承租解決方案的企業(yè)級 IBM 中間件產品組件的多個功能和技術。每個演示的其他技術細節(jié)包括在參考資料部分列出的一系列文章中。演示系列中的主題包括:
簡介:如何利用中間件功能構建多承租應用程序。
WebSphere Portal Server:一種使用 WebSphere Portal Server 中的虛擬門戶支持多承租的技術(請注意,支持多承租有不同的方法;這是一種可能使用的技術)??梢詮?quot;構建 SOA 組合業(yè)務服務,第 7 部分: 為組合業(yè)務服務提供多承租支持"中了解技術細節(jié)。
IBM WebSphere Portlet Factory:如何使用 WebSphere Portlet Factory 中的動態(tài)概要組合 portlet 驅動的多承租用戶界面?可以從"構建 SOA 組合業(yè)務服務,第 8 部分: 使用 WebSphere Portlet Factory 動態(tài)概要構建多個承租者的 Portlet"中了解技術細節(jié)。
IBM DB2 V9:設計允許使用 pureXML 為每個承租者自定義模式的多承租數據體系結構??梢詮?quot;Data Integration and Composite Business Services, Part 3:Build a multi-tenant data tier with access control and security"中了解技術細節(jié)。
IBM WebSphere Portal Server、IBM WebSphere Process Server 和 IBM Tivoli Directory Server:關于構建多承租用戶注冊中心和使用 WebSphere Portal Server 和 Tivoli Directory Server 強制執(zhí)行基于角色的控制的演示,以及關于通過 Sphere Process Server 和 Tivoli Directory Server 使用人工任務構建安全工作流的演示??梢詮?quot;Securing a composite business service delivered as a software-as-a-service:Part I, secure multi-tenancy with WebSphere Portal Server"和"Securing a composite business service delivered as a software-as-a-service:Part II, Supporting identity propagation (enterprise and federated SSO) and authorization"中了解技術細節(jié)。
圖 3. 用于實現使用 IBM 中間件構建的示例多承租應用程序中的功能層的 IBM 中間件產品
本系列文章基于上面的文章和演示,描述了使用 IBM 中間件構建多承租應用程序的一些高級技術。例如,其中一篇文章將演示如何在 WebSphere Process Server 中隔離共享的多承租工作流中的人工任務。另一篇文章將描述如何使用 Tivoli Usage and Accounting Manager 提供基于使用情況的測定和計費解決方案。
面向服務提供者的模式
選擇適當級別的數據層隔離,以獲取自定義能力和方便地進行承租者數據管理:服務提供者可以選擇:
將每個承租者的數據隔離到不同的數據庫。
將每個承租者的數據隔離到獨立的表和模式。
在所有承租者之間共享一組相同的表和模式。
在承租者之間共享模式時,自定義每個承租者的數據字段是一項難以應對的問題。本系列的后續(xù)文章將評估一組從許多方面解決這些問題的模式,其中包括性能、管理和可伸縮性。IT 還演示了一些改進可管理性的技巧,例如,介紹在所有承租者之間共享模式時,如何適應特定于承租者的數據的備份和恢復。
使用 IBM WebSphere Enterprise Service Bus、IBM WebSphere Business Services Fabric 或 IBM WebSphere DataPower? SOA Appliances 為現有 Web 服務快速啟用多承租: 服務提供者可能需要為現有 Web 服務快速啟用多承租。為從頭啟用多承租,在現有實現中進行代碼更改可能需要進行大量的工作。然而,可以構建基于中間件的中介層,使不同承租者的服務請求支持不同的 Web 服務端點。在本例中,不需要修改現有 Web 服務實現。本系列的后續(xù)文章將演示如何使用 WebSphere Business Services Fabric、WebSphere Enterprise Services Bus 和 WebSphere DataPower SOA Appliances 實現此模式。
在大型企業(yè)中,通過中心中介層路由第三方 SaaS 服務調用:企業(yè) IT 部門可以使用中心中介層從組織中的不同部門路由所有第三方服務調用。此類中介層可提供其他功能,如對服務使用的授權、監(jiān)視和測定。本系列的后續(xù)文章將演示基于企業(yè)服務總線 (ESB) 的中介模式如何支持此類需求。
使用 IBM WebSphere Application Server, Extended Edition 擴展入門級中間件,并改進硬件的使用:在開始時,通常沒有充分考慮可伸縮性需求。當這些需求變得日益重要時,服務提供者通常使用大量的低成本小型服務器進行擴展。不過,擴展可能會帶來其他問題。例如,此方法可能會產生以下任一問題:
為支持個別承租者少有的峰值負載導致提供過多硬件。
由于大量的中間件實例,增加了管理的復雜性。
隔離不同承租者的應用程序,并使用 WebSphere Application Server, Extended Edition 支持特定于承租者的 QoS 需求:通過利用 IBM WebSphere Extended Deployment 中的服務器隔離策略,在共享硬件中運行其他承租者的應用程序時,服務提供者可以將承租者的應用程序隔離到專用硬件中。此外,解決方案開發(fā)人員可以利用 WebSphere Extended Deployment 中的 WebSphere Partitioning Facility 功能的編程模型構建支持多承租的應用程序。后續(xù)文章將演示如何使用 WebSphere Extended Deployment 支持特定于承租者的 QoS 需求和用于多承租的分區(qū)應用程序。
結束語
可擴展的多承租是 Web 交付 (SaaS) 解決方案的重要需求。不過,構建多承租解決方案還需要解決若干技術難題。使用 IBM 中間件,解決方案開發(fā)人員和服務提供者可以構建和部署可擴展、可自定義和可管理的成本高效的多承租解決方案。本系列的文章將介紹幾個相關的 IBM 中間件功能和技術,并描述如何應用它們,以解決上述的技術難題。請繼續(xù)關注!
作者簡介
German Goldszmidt 博士是 IBM 軟件部的一位杰出工程師,其研究重點是用于交付、自定義和部署 SOA 組合應用程序來支持業(yè)務服務的集成平臺的體系結構。之前他曾在 IBM T.J. Watson Research Center 擔任研究人員,并曾帶領團隊進行多種技術的設計和實現工作,包括 Océano(自主計算 eUtility 的第一個原型)和 Network Dispatcher(WebSphere 產品的負載平衡組件)。
Indrajit Poddar 是一位顧問軟件工程師,現在是 IBM 軟件部策略與技術團隊的一名成員。他感興趣的是采用面向服務的體系結構和 IBM Software Group 產品組合(WebSphere Application Server、Process Server, Portal Server 和 Tivoli and Rational 產品)來設計復合應用程序的體系結構。他獲得了賓夕法尼亞州立大學的計算機科學與工程學士學位,以及位于印度坎普爾市的印度科技大學計算機科學與工程碩士學位。