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