2009/04/07
多租戶架構(gòu)(Multitenancy)已成為軟件行業(yè)的一個口號。你只要詢問某家公司它對這個主題有什么看法,就能判斷該公司從事什么業(yè)務(wù)。對于靠該架構(gòu)起家的公司(Salesforce。com和谷歌)而言,多租戶架構(gòu)必不可少。對于傳統(tǒng)的老牌開發(fā)商(微軟、SAP和甲骨文)而言,多租戶架構(gòu)分別被認(rèn)為是一種威脅、無名小卒或者是一種額外的交付模式。本文詳細(xì)介紹多租戶架構(gòu)以及它在如何改變軟件行業(yè)。什么是多租戶架構(gòu)?
多租戶架構(gòu)的核心思想就是,軟件采用這種方式來開發(fā):應(yīng)用程序的一個實例可處理多個客戶即租戶的要求。以Salesforce的模式為例,每個客戶開始時都使用應(yīng)用程序的同一版本。數(shù)據(jù)存儲在共享數(shù)據(jù)庫中,但每個客戶只可以訪問自己的信息。整個應(yīng)用程序由所謂的元數(shù)據(jù)(Metadata)來描述;元數(shù)據(jù)就是命令指示,描述了應(yīng)用程序如何運(yùn)行的各個方面。如果客戶想定制應(yīng)用程序,可以創(chuàng)建及配置新的元數(shù)據(jù),以描述新的屏幕、數(shù)據(jù)庫字段或所需行為。
多租戶架構(gòu)之外的選擇是單租戶架構(gòu);在這種模式中,每個客戶都運(yùn)行自己的軟件實例,軟件可通過元數(shù)據(jù)或其他方式來配置。SAP公司為其Business by Design軟件采用了單租戶模式,該軟件實施了眾多商業(yè)應(yīng)用程序。
多租戶模式與單租戶架構(gòu)模式存在大片的潛在灰色區(qū),往往被人們所忽視。單租戶應(yīng)用程序可由云環(huán)境中的虛擬化服務(wù)器或數(shù)據(jù)中心內(nèi)的服務(wù)器來提供,單租戶應(yīng)用程序的各部分可以共享或不共享。比方說,應(yīng)用程序采用單租戶模式、而數(shù)據(jù)庫進(jìn)行共享這種現(xiàn)象并不罕見。
Salesforce在多租戶架構(gòu)方面表明了這個看法:它讓軟件開發(fā)商只需要為在一個運(yùn)作環(huán)境下運(yùn)行的軟件的一個版本而操心。不需要為不同的軟硬件配置支持多個版本。因為Salesforce的所有客戶都運(yùn)行同一軟件的同一版本,他們就能看清楚什么在順暢運(yùn)行、什么需要改進(jìn)。
一旦Salesforce進(jìn)行了改進(jìn),所有客戶就可以同時獲得改進(jìn)之處,不過客戶總是可以選擇啟用新特性,還是任由新特性被禁用。由于加大了關(guān)注度和集中化,創(chuàng)新步伐更快了。合作伙伴在開發(fā)兼容產(chǎn)品時,也可以把主要精力放在支持軟件的一個版本上。
與單租戶架構(gòu)相比,多租戶架構(gòu)的一個缺點就是,某一客戶的問題會影響整個系統(tǒng)。另外,如果集中式運(yùn)作出問題,所有客戶都會受到影響。沒有哪家軟件即服務(wù)(SaaS)提供商是完美無缺的。它們都遇到過嚴(yán)重的服務(wù)停用事件。不過與大多數(shù)內(nèi)部數(shù)據(jù)中心的糟糕記錄相比,它們的情況似乎都相當(dāng)好。
Salesforce通過Force。com平臺把多租戶架構(gòu)的優(yōu)點擴(kuò)大到了其他軟件開發(fā)人員;該平臺讓第三方公司可以使用其軟件的原始構(gòu)建模塊和高級應(yīng)用程序組件,開發(fā)自己的多租戶應(yīng)用程序。這種模式被稱為“平臺即服務(wù)”(Platform-as-a-Service);谷歌等其他公司也有類似服務(wù),支持多租戶應(yīng)用程序的開發(fā)。
隨著支持應(yīng)用程序的構(gòu)建模塊變得更加通用、較少經(jīng)過改動以便開發(fā)多租戶應(yīng)用程序,你就會慢慢進(jìn)入到基礎(chǔ)架構(gòu)即服務(wù)(Infrastructure-as-a-Service)領(lǐng)域,這種服務(wù)提供了原始計算功能。顯然,弄清楚所有這些層絕非易事。
多租戶架構(gòu)是SaaS供應(yīng)商取得成功的關(guān)鍵?
對用戶和開發(fā)人員來說,真正的問題是,為什么應(yīng)當(dāng)在乎某應(yīng)用程序或某平臺采用單租戶架構(gòu)還是采用多租戶架構(gòu)?Salesforce的首席執(zhí)行官 Marc Benioff在公開演講中堅持認(rèn)為,SaaS供應(yīng)商要取得成功,就必須采用多租戶架構(gòu),另一些知名的分析師也這么認(rèn)為。但真是這樣嗎?SaaS模式為客戶減掉了開發(fā)及管理基礎(chǔ)架構(gòu)的負(fù)擔(dān)。針對單租戶架構(gòu),同樣可以做到這一點。
使用應(yīng)用程序的惟一理由就是它可以完成你想要它完成的功能,而Salesforce已證明成千上萬的客戶需要它的軟件。但在其他領(lǐng)域,多租戶架構(gòu)還沒有證明它就是靈丹妙藥。比方說,Netsuite提供了采用多租戶架構(gòu)的企業(yè)資源規(guī)劃(ERP)軟件包。SAP有其Business ByDesign產(chǎn)品,這套商業(yè)應(yīng)用程序采用了單租戶架構(gòu)。這兩家公司都還沒有擁有Salesforce。com那么眾多的客戶。
可以解釋Salesforce及其多租戶服務(wù)取得成功的另一個理由與需求的共性有關(guān)。如果你認(rèn)為客戶關(guān)系管理(CRM)是存在需求共性的一個領(lǐng)域,可以認(rèn)為ERP領(lǐng)域的需求共性更為明顯。
大多數(shù)客戶需要從CRM獲得所有可能功能中相同的20%。對ERP而言,可能每個客戶需要的是不同的20%。按照這條思路來推理,SaaS公司的成功關(guān)鍵也許在于選擇正確的產(chǎn)品,對所有客戶來說最常見的一個產(chǎn)品。Salesforce采用多租戶方案主攻這個領(lǐng)域,結(jié)果受益良多,但它所做的最明智的舉動恐怕就是當(dāng)初先選擇CRM作為主攻市場。
從開發(fā)人員的角度來看,多租戶架構(gòu)不是最值得注意的。使用一個平臺的目的在于,迅速開發(fā)出所需的產(chǎn)品。有些公司會發(fā)現(xiàn),由于Force.com或谷歌應(yīng)用引擎(Google App Engine)目前提供了廣泛的功能范圍(functional footprint),能夠盡快讓自己實現(xiàn)想要企及的目標(biāo)。其他公司會因使用Ruby on Rails或Engine Yard用于主機(jī)托管所獲得的極大靈活性而更快地取得成功。
要是閱讀Salesforce的白皮書,你會看到一幅圖片,上面介紹了新的元數(shù)據(jù)驅(qū)動型編程模式,應(yīng)用程序恰好是用多租戶架構(gòu)來提供的。與通過元數(shù)據(jù)大大提高抽象程度(這也許是Salesforce的最大成就)這個成就相比,多租戶架構(gòu)是次要的。如果一家公司能夠為客戶提供通過元數(shù)據(jù)、輕松獲取及配置應(yīng)用程序的一種方式,它就能成功。但許多軟件公司一直在提供可通過元數(shù)據(jù)來配置的軟件。Salesforce有什么質(zhì)的不同嗎?
Salesforce的成功秘訣在于,該公司選擇了一個領(lǐng)域即CRM,許多客戶對此有著共同的需求。然后, Salesforce致力于基于多租戶架構(gòu),創(chuàng)建可以擴(kuò)展的運(yùn)作環(huán)境(SaaS模式)。多租戶架構(gòu)的最大價值倒并不在于Salesforce指出的種種優(yōu)點,而在于這個事實:該架構(gòu)迫使Salesforce更好地開發(fā)元數(shù)據(jù)驅(qū)動的應(yīng)用程序。
確保軟件取得成功的一個關(guān)鍵方面在于可配置性。通過基于元數(shù)據(jù)的配置來滿足客戶要求越是容易,應(yīng)用程序越有希望成功,不管采用的是單租戶架構(gòu)還是多租戶架構(gòu)。但我們回答不了的一個問題是,基于元數(shù)據(jù)的可配置性方面是不是存在極限。換句話說,簡化像適用于世界上每個國家的會計科目表這樣的復(fù)雜對象到底有沒有可能?是不是有些問題復(fù)雜到總是很難處理、因而無法配置的地步?
對我們來說,多租戶架構(gòu)的未來方面值得關(guān)注的問題在于,Salesforce取得的成就是否就是操作系統(tǒng)、應(yīng)用服務(wù)器層和編程語言向虛擬化環(huán)境擴(kuò)展的先兆?Salesforce是從應(yīng)用程序起家的。
其他廠商不會對迅猛發(fā)展的Force.com坐視不管;他們正開始從其他方向來解決這個問題。SAP、微軟、甲骨文、IBM、惠普和谷歌都在積極開發(fā)自己的產(chǎn)品。
saasChN.com