借國(guó)慶長(zhǎng)假的機(jī)會(huì)寫了這篇長(zhǎng)文,全面地整理了個(gè)人從虛擬化到云計(jì)算各個(gè)層面的看法。主要的內(nèi)容涉及虛擬化、虛擬化管理、數(shù)據(jù)中心虛擬化、云計(jì)算、公有云與私有云、以及開放源代碼。本文的全部?jī)?nèi)容均屬于作者的個(gè)人觀點(diǎn),而不代表任何公司的觀點(diǎn)。歡迎討論。
A、虛擬化
虛擬化是指在同一臺(tái)物理機(jī)器上模擬多臺(tái)虛擬機(jī)的能力。每臺(tái)虛擬機(jī)在邏輯上擁有獨(dú)立的處理器、內(nèi)存、硬盤和網(wǎng)絡(luò)接口。使用虛擬化技術(shù)能夠提高硬件資源的利用率,使得多個(gè)應(yīng)用能夠運(yùn)行在同一臺(tái)物理機(jī)上各自擁有彼此隔離的運(yùn)行環(huán)境。
虛擬化的也有不同的層次,例如硬件層面的虛擬化和軟件層面的虛擬化。硬件虛擬化指的是通過(guò)模擬硬件的方式獲得一個(gè)類似于真實(shí)計(jì)算機(jī)的環(huán)境,可以運(yùn)行一個(gè)完整的操作系統(tǒng)。在硬件虛擬化這個(gè)層面,又有Full Virtualization(全虛擬化,幾乎是完整地模擬一套真實(shí)的硬件設(shè)備。大部分操作系統(tǒng)無(wú)須進(jìn)行任何修改即可直接運(yùn)行在全虛擬化環(huán)境中。)、Partial Virtualization(部分虛擬化,僅僅提供了對(duì)關(guān)鍵性計(jì)算組件或者指令集的模擬。操作系統(tǒng)可能需要做某些修改才能夠運(yùn)行在部分虛擬化環(huán)境中。)和Paravirtualization(半虛擬化,不對(duì)硬件設(shè)備進(jìn)行模擬,虛擬機(jī)擁有獨(dú)立的運(yùn)行環(huán)境,通過(guò)虛擬機(jī)管理程序共享底層的硬件資源。大部分操作系統(tǒng)需要進(jìn)行修改才能夠運(yùn)行在半虛擬化環(huán)境中。)等不同的實(shí)現(xiàn)方式。軟件層面的虛擬化,往往是指在同一個(gè)操作系統(tǒng)實(shí)例的基礎(chǔ)上提供多個(gè)隔離的虛擬運(yùn)行環(huán)境,也常常被稱為容器技術(shù)。
在硬件虛擬化的層面,現(xiàn)代的虛擬化技術(shù)通常是全虛擬化和半虛擬化的混合體。常見的虛擬化技術(shù)例如VMWare、Xen和KVM都同時(shí)提供了對(duì)全虛擬化和半虛擬化的支持。以硬件虛擬化的方式所提供的虛擬機(jī),通常都在運(yùn)行一個(gè)完整的操作系統(tǒng),在同一臺(tái)宿主機(jī)上存在大量相同或者相似的進(jìn)程和內(nèi)存頁(yè),從而導(dǎo)致明顯的性能損耗。目前,通過(guò)KSM等技術(shù)可以識(shí)別與合并含有相同內(nèi)容的內(nèi)存頁(yè),但是還沒(méi)有對(duì)大量相同或者相似的進(jìn)程進(jìn)行優(yōu)化處理的有效手段。因此,硬件虛擬化也往往被稱為重量級(jí)虛擬化,在同一宿主機(jī)上能夠同時(shí)運(yùn)行的虛擬機(jī)數(shù)量是相當(dāng)有限的。在軟件虛擬化的層面,同一宿主機(jī)上的所有虛擬機(jī)共享同一個(gè)操作系統(tǒng)實(shí)例,不存在由于運(yùn)行多個(gè)操作系統(tǒng)實(shí)例所造成的性能損耗。因此,軟件虛擬化也往往被稱為輕量級(jí)虛擬化,在同一宿主機(jī)上能夠同時(shí)運(yùn)行的虛擬運(yùn)行環(huán)境數(shù)量是比較寬松的。以Solaris操作系統(tǒng)上的Container為例,一個(gè)Solaris操作系統(tǒng)的實(shí)例理論上可以支持多達(dá)8000個(gè)Container(實(shí)際能夠運(yùn)行的Container數(shù)量取決于系統(tǒng)資源和負(fù)載)。與此類似,Linux操作系統(tǒng)上的LXC可以輕松地在同一宿主機(jī)上同時(shí)支持?jǐn)?shù)量可觀的虛擬運(yùn)行環(huán)境。
在虛擬化這個(gè)領(lǐng)域,國(guó)內(nèi)的公司對(duì)硬件虛擬化的興趣較大,在研發(fā)和生產(chǎn)環(huán)境中也大都采用硬件虛擬化技術(shù)。淘寶是國(guó)內(nèi)較早地研究并應(yīng)用軟件虛擬化技術(shù)的,他們?cè)谔詫氈髡镜膶?shí)踐經(jīng)驗(yàn)表明使用cgroup替代Xen能夠提升資源利用率。至于在一個(gè)實(shí)際的應(yīng)用場(chǎng)景中到底應(yīng)該選擇硬件虛擬化還是軟件虛擬化,則應(yīng)該重點(diǎn)考慮最終用戶是否需要對(duì)操作系統(tǒng)的完全控制權(quán)(例如升級(jí)內(nèi)核版本)。如果最終用戶僅僅需要對(duì)運(yùn)行環(huán)境的控制權(quán)(例如PaaS層面的各種App Engine服務(wù)),軟件虛擬化可能性價(jià)比更高。對(duì)于為同一應(yīng)用提供橫向擴(kuò)展能力的應(yīng)用場(chǎng)景,軟件虛擬化也是比較好的選擇。
對(duì)于需要深入了解虛擬化技術(shù)的技術(shù)人員來(lái)說(shuō),VMWare發(fā)表的白皮書《Understanding Full Virtualization, Paravirtualization, and Hardware Assist》是一份很好的參考資料。
通常來(lái)講,能夠直接使用虛擬化技術(shù)的用戶數(shù)量是比較少的。以Linux操作系統(tǒng)為例,能夠進(jìn)行虛擬機(jī)生命周期管理的用戶,一般就是具有訪問(wèn)libvirt權(quán)限的用戶。在一個(gè)公司或者其他實(shí)體中,這些用戶通常是系統(tǒng)管理員。
B、虛擬化管理
早期的虛擬化技術(shù),解決的是在同一臺(tái)物理機(jī)上提供多個(gè)相互獨(dú)立的運(yùn)行環(huán)境的問(wèn)題。當(dāng)需要管理的物理機(jī)數(shù)量較小時(shí),系統(tǒng)管理員可以手動(dòng)登錄到不同的物理機(jī)上進(jìn)行虛擬機(jī)生命周期管理(資源配置、啟動(dòng)、關(guān)閉等等)。當(dāng)需要管理的物理機(jī)數(shù)量較大時(shí),就需要寫一些腳本/程序來(lái)提高虛擬機(jī)生命周期管理的自動(dòng)化程度。以管理和調(diào)度大量物理/虛擬計(jì)算資源為目的軟件,稱為虛擬化管理工具。虛擬化管理工具使得系統(tǒng)管理員可以從同一個(gè)位置執(zhí)行如下任務(wù):(1)對(duì)不同物理機(jī)上的虛擬機(jī)進(jìn)行生命周期管理;(2)對(duì)所有的物理機(jī)和虛擬機(jī)進(jìn)行查詢甚至監(jiān)控;(3)建立虛擬機(jī)命名與虛擬機(jī)實(shí)例直接的映射關(guān)系,使得虛擬機(jī)的識(shí)別和管理更加容易。Linux操作系統(tǒng)上的VirtManager是一個(gè)簡(jiǎn)單的虛擬化管理工具。在VMWare產(chǎn)品家族中,VMWare vSphere是一個(gè)功能強(qiáng)大的虛擬化管理工具。
虛擬化管理工具是虛擬化技術(shù)的自然延伸。簡(jiǎn)單的虛擬化管理工具,解決的是由于物理機(jī)數(shù)量增多所導(dǎo)致的工作內(nèi)容繁雜問(wèn)題。在這個(gè)層面,虛擬化管理通常和集群的概念同時(shí)出現(xiàn)。一個(gè)虛擬化管理工具,往往需要獲得各臺(tái)物理機(jī)上的虛擬機(jī)生命周期管理權(quán)限(例如具有訪問(wèn)libvirt權(quán)限的用戶名和密碼)。在同一個(gè)集群當(dāng)中,為了方便起見,可能需要設(shè)定一個(gè)在整個(gè)集群層面通用的管理用戶。可以認(rèn)為,虛擬化管理為系統(tǒng)管理員提供了便利,但是并沒(méi)有將虛擬機(jī)生命周期管理的權(quán)限下放給其他用戶。
C、數(shù)據(jù)中心虛擬化
在數(shù)據(jù)中心的層面,系統(tǒng)管理員需要面對(duì)大量不同類型的硬件和應(yīng)用。與小型的集群相比較,數(shù)據(jù)中心的系統(tǒng)復(fù)雜度大大提高了。這時(shí)簡(jiǎn)單的虛擬化管理工具已經(jīng)無(wú)法滿足系統(tǒng)管理員的要求,因此在虛擬化管理工具的基礎(chǔ)上又發(fā)展出各種數(shù)據(jù)中心虛擬化管理系統(tǒng)。在硬件層面,數(shù)據(jù)中心虛擬化管理系統(tǒng)通過(guò)劃分資源池(一個(gè)資源池通常是一個(gè)集群)的方式對(duì)硬件資源進(jìn)行重新組織,并以虛擬基礎(chǔ)構(gòu)架(Virtual Infrastructure)的方式將計(jì)算資源暴露給用戶。在軟件層面,數(shù)據(jù)中心虛擬化管理系統(tǒng)引入系統(tǒng)管理員和普通用戶兩種不同的角色,甚至是基于應(yīng)用場(chǎng)景的需要設(shè)定顆粒度更細(xì)的基于角色的權(quán)限控制(Role Based Access Control,RBAC)。系統(tǒng)管理員對(duì)整個(gè)數(shù)據(jù)中心的物理機(jī)和虛擬機(jī)擁有管理權(quán)限,但是一般不對(duì)正常的虛擬機(jī)進(jìn)行干涉。普通用戶只能在自己具有權(quán)限的資源池內(nèi)進(jìn)行虛擬機(jī)生命周期管理操作,不具有控制物理機(jī)的權(quán)限。在極端的情況下,普通用戶只能夠看到分配給自己的資源池,而不了解組成該資源池物理機(jī)細(xì)節(jié)。
在數(shù)據(jù)中心虛擬化之前,創(chuàng)建虛擬機(jī)的動(dòng)作是需要系統(tǒng)管理員來(lái)完成的。在數(shù)據(jù)中心虛擬化管理系統(tǒng)中,通過(guò)基于角色的權(quán)限控制,虛擬機(jī)生命周期管理的權(quán)限被下放給所謂的“普通用戶”,在一定程度上可以減輕系統(tǒng)管理員的負(fù)擔(dān)。但是,出于系統(tǒng)安全的考慮,并不是公司里所有的員工都能夠擁有這樣的“普通用戶”賬號(hào)。一般來(lái)說(shuō),這種“普通賬號(hào)”只能夠分配給某個(gè)團(tuán)隊(duì)的負(fù)責(zé)人??梢哉J(rèn)為,一直到數(shù)據(jù)中心虛擬化這個(gè)層面,虛擬機(jī)的生命周期還是集中式管理的。
數(shù)據(jù)中心虛擬化管理系統(tǒng)是虛擬化管理工具的進(jìn)一步延伸,它所解決的是由于硬件和應(yīng)用規(guī)模上升所帶來(lái)的系統(tǒng)復(fù)雜度問(wèn)題。具體的物理設(shè)備被抽象成資源池之后,公司高管只需要了解各個(gè)資源池的規(guī)模、負(fù)載和健康狀況,最終用戶只需要了解分配給自己的資源池的規(guī)模、負(fù)載和健康狀況。只有系統(tǒng)管理員還需要對(duì)每一臺(tái)物理設(shè)備的配置、負(fù)載和故障了如指掌,但是資源池的概念也從邏輯上對(duì)所有的物理設(shè)備進(jìn)行了重新整理和分類,使得系統(tǒng)管理員的工作變得更加容易了。
現(xiàn)代的數(shù)據(jù)中心虛擬化管理系統(tǒng),往往提供了大量有助于運(yùn)維自動(dòng)化的功能。這些功能包括 (1)基于模板快速部署一系列相同或者是相似的運(yùn)行環(huán)境;(2)監(jiān)控、報(bào)表、預(yù)警、會(huì)計(jì)功能;和(3)高可用性、動(dòng)態(tài)負(fù)載均衡、備份與恢復(fù)等等。一些相對(duì)開放的數(shù)據(jù)中心虛擬化管理系統(tǒng),甚至以開放API的方式使得系統(tǒng)管理員能夠根據(jù)自身的應(yīng)用場(chǎng)景和流程開發(fā)額外的擴(kuò)展功能。
在VMWare產(chǎn)品家族中,VMWare vCenter是一個(gè)數(shù)據(jù)中心虛擬化管理軟件。其他值得推薦的數(shù)據(jù)中心虛擬化管理軟件包括Convirt、XenServer、Oracle VM、OpenQRM等等。
D、云計(jì)算
云計(jì)算是對(duì)數(shù)據(jù)中心虛擬化的進(jìn)一步封裝。在云計(jì)算管理軟件中,同樣需要有云管理員和普通用戶兩種(甚至更多)不同的角色以及不同的權(quán)限。管理員對(duì)整個(gè)數(shù)據(jù)中心的物理機(jī)和虛擬機(jī)擁有管理權(quán)限,但是一般不對(duì)正常的虛擬機(jī)進(jìn)行干涉。普通用戶可以通過(guò)瀏覽器自助地進(jìn)行虛擬機(jī)生命周期管理 ,也可以編寫程序通過(guò)Web Service自動(dòng)地進(jìn)行虛擬機(jī)生命周期管理。
在云計(jì)算這個(gè)層面,虛擬機(jī)生命周期管理的權(quán)限被徹底下放真正的普通用戶,但是也將資源池和物理機(jī)等等概念從普通用戶的視野中屏蔽了。普通用戶可以獲得計(jì)算資源,但是無(wú)需對(duì)其背后的物理資源有任何了解。從表面看,云計(jì)算似乎就是以與Amazon EC2/S3相兼容的模式提供計(jì)算資源。在實(shí)質(zhì)上,云計(jì)算是計(jì)算資源管理的模式發(fā)生了改變,最終用戶不再需要系統(tǒng)管理員的幫助即可自助地獲得獲得和管理計(jì)算資源。
對(duì)于云管理員來(lái)說(shuō),將虛擬機(jī)生命周期管理權(quán)限下放到最終用戶并沒(méi)有降低其工作壓力。相反,他有了更加令人頭疼的事情需要去處理。在傳統(tǒng)的IT架構(gòu)中,往往是一個(gè)應(yīng)用配備一套計(jì)算資源,應(yīng)用之間存在物理隔離,問(wèn)題診斷也相對(duì)容易。升級(jí)到云計(jì)算模式之后,多個(gè)應(yīng)用可能共享同一套計(jì)算資源,應(yīng)用之間存在資源競(jìng) 爭(zhēng),問(wèn)題診斷就相對(duì)困難。因此,云管理員往往希望選用的云計(jì)算管理軟件能夠有相對(duì)全面的數(shù)據(jù)中心虛擬化管理功能。對(duì)于云管理員來(lái)說(shuō),至關(guān)重要的功能包括 (1)監(jiān)控、報(bào)表、預(yù)警、會(huì)計(jì)功能;(2)高可用性、動(dòng)態(tài)負(fù)載均衡、備份與恢復(fù)等等;和(3)動(dòng)態(tài)遷移,可以用于局部負(fù)載調(diào)整以及故障診斷。
顯而易見,從虛擬化到云計(jì)算,對(duì)物理資源的封裝程度不斷提高,虛擬機(jī)生命周期的管理權(quán)限逐步下放。
在VMWare產(chǎn)品家族中,VMWare vCloud是一個(gè)云計(jì)算管理軟件。其他值得推薦的云計(jì)算管理軟件包括OpenStack、OpenNebula、Eucalyptus和CloudStack。雖然OpenStack、OpenNebula、Eucalyptus和CloudStack都是云計(jì)算管理軟件,但是其功能有較大的差別,這些差異源于不同 的軟件具有不同的設(shè)計(jì)理念。OpenNebula和CloudStack最初的設(shè)計(jì)目標(biāo)是數(shù)據(jù)中心虛擬化管理軟件,因此具有比較全面的數(shù)據(jù)中心虛擬化管理功能。云計(jì)算的概念興起之后,OpenNebula增加了OCCI和EC2接口,CloudStack則提供了稱為CloudBridge的額外組件 (CloudStack從 4.0版本開始缺省地包含了CloudBridge組件),從而實(shí)現(xiàn)了與Amazon EC2的兼容。Eucalyptus和OpenStack則是以Amazon EC2為原型自上而下地設(shè)計(jì)成云計(jì)算管理軟件的,從一開始就考慮與Amazon EC2的兼容性(OpenStack還增加了自己的擴(kuò)展),但是在數(shù)據(jù)中心虛擬化管理方面的功能尚有所欠缺。在這兩者當(dāng)中,Eucalyptus項(xiàng)目由于起步較早,在數(shù)據(jù)中心虛擬化管理方面的功能明顯強(qiáng)于OpenStack項(xiàng)目。
E、私有云與公有云
如D 所述的云計(jì)算,僅僅是一種狹義上的云計(jì)算,或者是與Amazon EC2相類似的云計(jì)算。 廣義上的云計(jì)算,可以泛指是指各種通過(guò)網(wǎng)絡(luò)訪問(wèn)物理/虛擬計(jì)算機(jī)并利用其計(jì)算資源的實(shí)踐,包括如D 所述的云計(jì)算和如C 所述的數(shù)據(jù)中心虛擬化。這兩者的共同點(diǎn)在于云計(jì)算服務(wù)提供商以虛擬機(jī)的方式向用戶提供計(jì)算資源,用戶無(wú)須了解虛擬機(jī)背后實(shí)際的物理資源狀況。如果某個(gè)云平臺(tái)僅對(duì)某個(gè)集團(tuán)內(nèi)部提供服務(wù),那么這個(gè)云平臺(tái)也可以被稱為“私有云”;如果某個(gè)云平臺(tái)對(duì)公眾提供服務(wù),那么這個(gè)云平臺(tái)也可以被稱為“公有云”。一般來(lái)說(shuō),私有云服務(wù)于集團(tuán)內(nèi)部的不同部門(或者應(yīng)用),強(qiáng)調(diào)虛擬資源調(diào)度的靈活性(例如最終用戶能夠指定虛擬機(jī)的處理器、內(nèi)存和硬盤配置);公有云服務(wù)于公眾,強(qiáng)調(diào)虛擬資源的標(biāo)準(zhǔn)性(例如公有云服務(wù)提供商僅提供有限的幾個(gè)虛擬機(jī)產(chǎn)品型號(hào),每個(gè)虛擬機(jī)產(chǎn)品型號(hào)的處理器、內(nèi)存和硬盤配置是固定的,最終用戶只能夠選擇與自身需求最為接近的虛擬機(jī)產(chǎn)品型號(hào))。
對(duì)于公有云服務(wù)提供商來(lái)說(shuō),其業(yè)務(wù)模式與Amazon EC2相類似。因此,公有云服務(wù)提供商通常應(yīng)該選擇如D 所述的云計(jì)算管理軟件。對(duì)于私有云服務(wù)提供商來(lái)說(shuō),則應(yīng)該根據(jù)集團(tuán)內(nèi)部計(jì)算資源的管理模式來(lái)決定選用的軟件。如果對(duì)計(jì)算資源進(jìn)行集中式管理,僅僅將虛擬機(jī)生命周期管理的權(quán)限下放到部門經(jīng)理或者是團(tuán)隊(duì)負(fù)責(zé)人這個(gè)級(jí)別,那么就應(yīng)該選擇如C 所述的數(shù)據(jù)中心虛擬化管理系統(tǒng)。如果要將虛擬機(jī)生命周期管理的權(quán)限下放到真正需要計(jì)算資源的最終用戶,則應(yīng)該選擇如D 所述的云計(jì)算管理軟件。
傳統(tǒng)上,人們認(rèn)為私有云是建立在企業(yè)內(nèi)部數(shù)據(jù)中心和自有硬件的基礎(chǔ)上的。但是硬件廠商加入云計(jì)算服務(wù)提供商的行列之后,私有云與公有云之間的界限變得越來(lái)越模糊。Rackspace推出的私有云服務(wù),客戶可以選擇使用自有的數(shù)據(jù)中心和硬件,也可以選擇租用Rackspace的數(shù)據(jù)中心和硬件。Oracle最近更進(jìn)一步提出了“由Oracle擁有并管理”( Owned by Oracle, Managed by Oracle)的私有云服務(wù)。在這種新的業(yè)務(wù)模式下,客戶所獨(dú)享的私有云是僅僅是云服務(wù)提供商的公有云當(dāng)中與其他客戶相對(duì)隔離的一個(gè)資源池(you got private cloud in my public cloud)。而對(duì)于云服務(wù)提供商來(lái)說(shuō),用于提供公有云服務(wù)的基礎(chǔ)構(gòu)架可能僅僅是其自有基礎(chǔ)構(gòu)架(私有云)中的一個(gè)資源池,甚至是硬件廠商自有基礎(chǔ)構(gòu)架(私有云)中的一個(gè)資源池(you got public cloud in my private cloud)。
對(duì)于客戶來(lái)說(shuō),使用基于云服務(wù)提供商的數(shù)據(jù)中心和硬件的私有云服務(wù)在財(cái)務(wù)上是合理的。這樣做意味著自建數(shù)據(jù)中心和采購(gòu)硬件設(shè)備的固定資產(chǎn)投入(CapEX)變成了分期付款的運(yùn)營(yíng)費(fèi)用(OPEX),寶貴的現(xiàn)金則可以作為用于拓展業(yè)務(wù)的周轉(zhuǎn)資金。即使長(zhǎng)期下來(lái)?yè)碛写祟愃接性频目傮w費(fèi)用比自建數(shù)據(jù)中心和采購(gòu)硬件設(shè)備要高,但是利用多出來(lái)的現(xiàn)金進(jìn)行業(yè)務(wù)拓展所帶來(lái)的回報(bào)可能會(huì)超過(guò)兩個(gè)方案之間的費(fèi)用差額。在極端的情況下,即使企業(yè)最終沒(méi)有獲得成功,也無(wú)需心疼新近購(gòu)置的一大堆硬件設(shè)備。除非是房地產(chǎn)市場(chǎng)在短時(shí)間內(nèi)有較大的起色,一家瀕臨倒閉的公司通常是不會(huì)為沒(méi)有自建一個(gè)數(shù)據(jù)中心而感到后悔的。(需要指出的是,對(duì)于一家能夠長(zhǎng)時(shí)間運(yùn)作的公司來(lái)說(shuō),通過(guò)房地產(chǎn)來(lái)盈利是完全有可能的。在Sun 公司被Oracle公司收購(gòu)之前,就曾經(jīng)通過(guò)變賣祖業(yè)的方式使得財(cái)報(bào)扭虧為盈。)
那么,硬件廠商在這場(chǎng)游戲里面扮演的是什么角色呢?當(dāng)用戶的固定資產(chǎn)投入(CapEX)變成了分期付款的運(yùn)營(yíng)費(fèi)用(OPEX)時(shí),硬件廠商難道不是需要更長(zhǎng)的時(shí)間才能夠收回貨款嗎?
1865年,英國(guó)經(jīng)濟(jì)學(xué)家威廉杰文斯(Willian Jevons,1835-1882)寫了一本名為《煤礦問(wèn)題》(The Coal Question)的書。杰文斯描述了一個(gè)似乎自相矛盾的現(xiàn)象:蒸汽機(jī)效率方面的進(jìn)步提高了煤的能源轉(zhuǎn)換率,能源轉(zhuǎn)換率的提高導(dǎo)致了能源價(jià)格降低,能源價(jià)格的降低又進(jìn)一步導(dǎo)致了煤消費(fèi)量的增加。這種現(xiàn)象稱為杰文斯悖論,其核心思想是資源利用率的提高導(dǎo)致價(jià)格降低,最終會(huì)增加資源的使用量。在過(guò)去150年當(dāng)中,杰文斯悖論在主要的工業(yè)原料、交通、能源、食品工業(yè)等多個(gè)領(lǐng)域都得到了實(shí)證。
公共云計(jì)算服務(wù)的核心價(jià)值,是將服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等等硬件設(shè)備從自行采購(gòu)的固定資產(chǎn)變成了按量計(jì)費(fèi)的公共資源。虛擬化技術(shù)提高了計(jì)算資源的利用率,導(dǎo)致了計(jì)算資源價(jià)格的降低,最終會(huì)增加計(jì)算資源的使用量。明白了這個(gè)邏輯,就能夠明白為什么HP會(huì)果斷加入OpenStack的陣營(yíng)并在OpenStack尚未成熟的情況下率先推出基于基于OpenStack的公有云服務(wù)。固然,做云計(jì)算不一定能夠拯救HP于搖搖欲墜之中,但是如果不做云計(jì)算,HP恐怕就時(shí)日不多了。同樣,明白了這個(gè)邏輯,就能夠明白為什么Oracle會(huì)從對(duì)云計(jì)算嗤之以鼻搖身一變稱為云計(jì)算的實(shí)踐者。收購(gòu)了Sun 公司之后,Oracle一夜之間變成了世界領(lǐng)先的硬件提供商。當(dāng)時(shí)云計(jì)算的概念剛剛興起,Oracle不以為然的態(tài)度說(shuō)明它尚未充分適應(yīng)自身地位的變化。如今云計(jì)算已經(jīng)從概念炒作進(jìn)入實(shí)戰(zhàn)演習(xí)階段,作為主要硬件廠商之一的Oracle如果不打算從云計(jì)算中分一杯羹的話,那就是真正的反射弧過(guò)長(zhǎng)了。
根據(jù)杰文斯悖論,對(duì)于用戶來(lái)說(shuō),價(jià)格降低是用量增加的前提。那么,應(yīng)該如何給云計(jì)算資源定價(jià)呢?
目前,大部分公有云服務(wù)提供商的虛擬機(jī)產(chǎn)品都是按照配置定價(jià)的。以Amazon EC2為例,其中型(Medium)虛擬機(jī)(3.75 GB內(nèi)存,2 ECU計(jì)算單元,410 GB存儲(chǔ),0.16美元每小時(shí))的配置是小型(Small)虛擬機(jī)(1.7 GB內(nèi)存,1 ECU計(jì)算單元,160 GB存儲(chǔ),0.08美元每小時(shí))的兩倍,其價(jià)格也是小型虛擬機(jī)的兩倍。新近推出的HP Cloud Services,以及國(guó)內(nèi)的盛大云和阿里云,基本上都照搬Amazon EC2的定價(jià)方法。問(wèn)題在于,虛擬機(jī)的配置提高之后,虛擬機(jī)的性能并沒(méi)有得到同比提高。一系列針對(duì)Amazon EC2、HP Cloud Services、盛大云和阿里云的性能測(cè)試結(jié)果表明,對(duì)于多種類型的應(yīng)用來(lái)說(shuō),隨著虛擬機(jī)配置的提高,其性價(jià)比實(shí)際上是不斷降低的。這樣的定價(jià)策略,顯然不能達(dá)到鼓勵(lì)用戶使用更多計(jì)算資源的目的。
按照虛擬機(jī)的性能來(lái)定價(jià)可能是一個(gè)更加合適的做法。舉個(gè)例子說(shuō),某個(gè)牌子的肥皂有大小兩種包裝,小包裝有一塊肥皂而大包裝有兩塊肥皂。用戶愿意花雙倍的錢購(gòu)買大包裝,往往是因?yàn)榇蟀b能夠洗兩倍的衣服而不是因?yàn)樗雌饋?lái)更大。同理,來(lái)自同一公有云服務(wù)提供商的不同虛擬機(jī)產(chǎn)品,應(yīng)該盡可能使其性價(jià)比維持在同一水平線上。問(wèn)題在于,不同類型的應(yīng)用對(duì)處理器、內(nèi)存和存儲(chǔ)等計(jì)算資源的需求存在較大差異,其“性能–配置”變化曲線也各有不同。因此,在公有云服務(wù)領(lǐng)域需要一個(gè)對(duì)虛擬機(jī)性能進(jìn)行綜合評(píng)估的框架,通過(guò)該框架獲得的評(píng)估結(jié)果可以表示一臺(tái)虛擬機(jī)的綜合處理能力,而不僅僅是處理器、內(nèi)存和存儲(chǔ)當(dāng)中的任何一項(xiàng)?;谶@樣一個(gè)測(cè)試框架,不僅可以對(duì)同一公有云服務(wù)提供商的產(chǎn)品進(jìn)行比較,還可以對(duì)不同公有云服務(wù)提供商的產(chǎn)品進(jìn)行比較。
F、開放源代碼
近些年來(lái),我們?cè)谛畔⒓夹g(shù)領(lǐng)域觀察到一個(gè)規(guī)律。當(dāng)一個(gè)閉源的解決方案在市場(chǎng)上取得成功時(shí),很快就會(huì)出現(xiàn)一個(gè)甚至是多個(gè)提供類似功能(或者服務(wù))的開源或者閉源的追隨者。(首先出現(xiàn)開源軟件,然后出現(xiàn)與之競(jìng)爭(zhēng)的閉源軟件的案例比較少見。)在操作系統(tǒng)領(lǐng)域,Linux逐漸達(dá)到甚至是超越了Unix的技術(shù)水平,進(jìn)而取代Unix的市場(chǎng)地位。在虛擬化領(lǐng)域,Xen和KVM緊緊跟隨VMWare的技術(shù)發(fā)展并有所突破,逐步蠶食VMware的市場(chǎng)份額。在云計(jì)算領(lǐng)域,Enomaly率先推出了以Amazon EC2為藍(lán)本的閉源解決方案,緊跟著又出現(xiàn)了以Eucalyptus和OpenStack為代表的開源解決方案。與此同時(shí),傳統(tǒng)意義上的閉源廠商對(duì)開源項(xiàng)目和社區(qū)的態(tài)度也在發(fā)生轉(zhuǎn)變。例如,多年來(lái)對(duì)開源項(xiàng)目持?jǐn)骋晳B(tài)度的微軟于今年四月組建了一家名為“微軟開放技術(shù)”(Microsoft Open Technologies)的子公司,其目標(biāo)是推進(jìn)微軟向開放領(lǐng)域的投資,包括互操作性、開放標(biāo)準(zhǔn)和開源軟件。
我們今天所處的商業(yè)環(huán)境,與上個(gè)世紀(jì)80年代自由軟件運(yùn)動(dòng)(Free Source Movement)剛剛興起的時(shí)候已經(jīng)有了較大的不同。自1998年NetScape第一次提出開放源代碼(Open Source)這個(gè)術(shù)語(yǔ)起,開放源代碼就已經(jīng)成為一種新的軟件研發(fā)、推廣與銷售模式,而不再是與商業(yè)軟件相對(duì)立的替代品了。與傳統(tǒng)的閉源軟件商業(yè)模式相對(duì)比,基于開放源代碼的商業(yè)模式具有如下特點(diǎn):
(1)在項(xiàng)目萌芽階段,通過(guò)開源軟件或者自由軟件等關(guān)鍵詞吸引潛在客戶以及合作伙伴。對(duì)于潛在客戶來(lái)說(shuō),選擇開源軟件能夠免費(fèi)或者是低價(jià)獲得閉源軟件的(部分)功能。對(duì)于合作伙伴來(lái)說(shuō),其興趣點(diǎn)可能在于銷售基于開源軟件的增強(qiáng)版本(例如企業(yè)版),提供基于開源軟件的解決方案,或者是該開源軟件的成功可能對(duì)其自身的產(chǎn)品的銷售有促進(jìn)作用。
(2)在項(xiàng)目成長(zhǎng)階段,主要的研發(fā)人員來(lái)自發(fā)起項(xiàng)目的企業(yè)以及該項(xiàng)目的企業(yè)合作伙伴。雖然也有一些單純出于興趣而向開源項(xiàng)目貢獻(xiàn)代碼的個(gè)人開發(fā)者,但是其數(shù)量相對(duì)較少。我們?cè)陂_源軟件的宣傳資料當(dāng)中經(jīng)常會(huì)見到類似于“由某某社區(qū)開發(fā)”的描述。最近10年來(lái),各種“社區(qū)”中的主要研發(fā)力量始終來(lái)自數(shù)量極為有限的企業(yè)合作伙伴。但是有些開源項(xiàng)目在宣傳中通常會(huì)有意無(wú)意地淡化企業(yè)合作伙伴的重要性,甚至是誤導(dǎo)受眾以為社區(qū)的主要成分是個(gè)人開發(fā)者。
(3)在項(xiàng)目收割階段,項(xiàng)目發(fā)起者以及主要合作伙伴可以通過(guò)銷售增強(qiáng)版本或者是提供解決方案獲取財(cái)務(wù)回報(bào)。雖然其他廠商也可以提供類似的產(chǎn)品或者服務(wù),但是開源項(xiàng)目的主要參與者往往在市場(chǎng)上擁有更大的話語(yǔ)權(quán)和權(quán)威性。關(guān)于開源項(xiàng)目的盈利問(wèn)題,Marten Mickos(Eucalyptus的CEO)在擔(dān)任MySQL公司CEO期間曾指出:“如果要在開源軟件上取得成功,那么你需要服務(wù)于:(A)愿意花費(fèi)時(shí)間來(lái)省錢的人;和(B)愿意花錢來(lái)節(jié)約時(shí)間的人?!比绻f(shuō)一個(gè)公司在開源方面取得了成功,那么它從開源軟件的銷售和服務(wù)方面獲得的回報(bào)至少應(yīng)該大于在研發(fā)和推廣方面的投入。顯而易見,某些用戶之所以能夠免費(fèi)使用開源軟件,一方面固然是因?yàn)樗麄兊膮⑴c降低了開源軟件在研發(fā)和推廣方面的投入,另一方面則是因?yàn)楦顿M(fèi)用戶為開源軟件付出了更多的錢。
那么,為什么基于開源軟件的解決方案通常要比其閉源的競(jìng)爭(zhēng)對(duì)手更便宜呢?通常來(lái)說(shuō),閉源軟件作為一個(gè)領(lǐng)域的開創(chuàng)者,在市場(chǎng)研究、產(chǎn)品設(shè)計(jì)、研發(fā)測(cè)試、推廣銷售等等環(huán)節(jié)都面臨很大的挑戰(zhàn)。開源軟件作為閉源軟件的追隨者,在市場(chǎng)研究方面有閉源軟件作為成功案例,在產(chǎn)品設(shè)計(jì)方面有閉源軟件作為參考模板,在推廣銷售方面也得益于閉源軟件的市場(chǎng)拓展。在研發(fā)方面,開源軟件出現(xiàn)的時(shí)間要稍晚于閉源軟件,在這個(gè)時(shí)間段里發(fā)生的技術(shù)進(jìn)步會(huì)明顯降低開源軟件進(jìn)入相關(guān)領(lǐng)域的門檻。除此之外,開源軟件可能在某些特性方面超越閉源軟件,但在總體水平上其功能的完備性、易用性、穩(wěn)定性、可靠性會(huì)稍遜于閉源軟件。因此,基于開源軟件的解決方案通常會(huì)采取“以閉源軟件30%的價(jià)格提供閉源軟件80%的功能”這樣的營(yíng)銷思路。除此之外,基于開源軟件的解決方案的可定制性對(duì)于某些客戶來(lái)說(shuō)也有特別的吸引力。
在中國(guó)的商業(yè)環(huán)境中,IT公司(或者說(shuō)互聯(lián)網(wǎng)公司)通常是愿意花費(fèi)時(shí)間來(lái)省錢的,而非IT公司(或者說(shuō)傳統(tǒng)行業(yè))通常是愿意花錢來(lái)節(jié)約時(shí)間的。需要指出的是,中國(guó)的非IT公司往往不在乎軟件是否開源,但是非常注重開源軟件的可定制性。
開放源代碼作為一種新的商業(yè)模式,并不比傳統(tǒng)的閉源模式具有更高的道德水準(zhǔn)。同理,在道德層面上對(duì)不同的開放源代碼實(shí)踐進(jìn)行評(píng)判也是不合適的。在OpenStack項(xiàng)目的萌芽階段,Rackspace公司的宣傳文案聲稱OpenStack是“世界上唯一真正開放源代碼的IaaS系統(tǒng)”。CloudStack、Eucalyptus和OpenNebula等具有類似功能的開源項(xiàng)目由于保留了部分閉源的企業(yè)版(2012年4 月以前,CloudStack項(xiàng)目和Eucalyptus均同時(shí)發(fā)布完全開源的社區(qū)版和部分閉源的企業(yè)版。2012年4 月之后,Eucalyptus項(xiàng)目宣布全面開源,CloudStack項(xiàng)目被Citrix收購(gòu)并捐贈(zèng)給Apache基金會(huì)后也全面開源。)、或者是僅向付費(fèi)客戶提供的自動(dòng)化安裝包(OpenNebula Pro是一個(gè)包含了增強(qiáng)功能的自動(dòng)化安裝包,但是其全部組件都是開放源代碼的。)而被Rackspace歸類為“不是真正的開放源代碼項(xiàng)目”。類似的宣傳持續(xù)了接近兩年時(shí)間,直到Rackspace公司推出了基于OpenStack項(xiàng)目的Rackspace Private Cloud軟件 — 一個(gè)性質(zhì)上與OpenNebula Pro類似的自動(dòng)化包。OpenNebula Pro是一個(gè)僅向付費(fèi)用戶提供的軟件包,但是任何用戶都可以免費(fèi)地下載與使用Rackspace Private Cloud軟件。問(wèn)題在于,當(dāng)用戶所管理的節(jié)點(diǎn)數(shù)量超過(guò)20臺(tái)服務(wù)器時(shí),就需要向Rackspace公司尋求幫助(購(gòu)買必要的技術(shù)支持)。這里我們暫且不討論將節(jié)點(diǎn)數(shù)量限制為20臺(tái)服務(wù)器這部分代碼是否開源的問(wèn)題。開源項(xiàng)目的發(fā)起者和主要貢獻(xiàn)者在其重新打包的發(fā)行版中添加了限制該軟件應(yīng)用范圍的功能,從道德層面來(lái)看很難解釋,但是在商業(yè)層面來(lái)看就很正常。在過(guò)去兩年中,OpenStack項(xiàng)目在研發(fā)、推廣、社區(qū)等領(lǐng)域所采取的種種措施,都堪稱是基于開放源代碼的商業(yè)模式的經(jīng)典案例。
前面我們提到,在同一領(lǐng)域往往存在多個(gè)相互競(jìng)爭(zhēng)的開源項(xiàng)目。以廣義上的云計(jì)算為例,除了我們熟悉的CloudStack、Eucalyptus、OpenNebula、OpenStack之外,還有Convirt、XenServer、Oracle VM、OpenQRM等等諸多選擇。針對(duì)一個(gè)特定的應(yīng)用場(chǎng)景,如何在眾多的開源方案中進(jìn)行選型呢?根據(jù)我個(gè)人的經(jīng)驗(yàn),可以將整個(gè)方案選型過(guò)程分為需求分析、技術(shù)分析、商務(wù)分析三個(gè)階段。
(1)在需求分析階段,針對(duì)特定的應(yīng)用場(chǎng)景深入挖掘該項(xiàng)目采用云計(jì)算技術(shù)的真正目的。在中國(guó),很多項(xiàng)目決策者對(duì)云計(jì)算的認(rèn)識(shí)往往停留在“提高資源利用率、降低運(yùn)維成本、提供更多便利”的階段,并沒(méi)有意識(shí)到這個(gè)列表已經(jīng)是大部分開源軟件均可提供的基本功能。除此之外,很多項(xiàng)目決策者缺省地將VMWare vCenter提供的全部功能作為對(duì)開源軟件的要求,而沒(méi)有考慮特定項(xiàng)目是否需要這些功能。因此,非常有必要針對(duì)特定的應(yīng)用場(chǎng)景進(jìn)行調(diào)研,明確將其按照數(shù)據(jù)中心虛擬化和狹義上的云計(jì)算歸類,并進(jìn)一步挖掘項(xiàng)目在功能上的具體要求。在很多情況下,數(shù)據(jù)中心虛擬化和狹義上的云計(jì)算均能夠滿足客戶的總體需求,那么銷售的任務(wù)就是將客戶的具體需求往有利于自身的方向上引導(dǎo)。這個(gè)技巧,我們稱之為客戶期望值管理(Expectation Management)。通過(guò)需求分析,明確特定應(yīng)用場(chǎng)景的分類,可以過(guò)濾掉一部分選項(xiàng)。
(2)在技術(shù)分析階段,首先比較各個(gè)開源軟件的參考架構(gòu),重點(diǎn)考慮在特定應(yīng)用場(chǎng)景下按照參考構(gòu)架進(jìn)行實(shí)施所面臨的困難。其次在功能的層面對(duì)各個(gè)開源軟件進(jìn)行對(duì)比,并將必須具備的功能(Must Have)和能夠加分的功能(Good to Have)區(qū)別對(duì)待。除此之外,還可以對(duì)安裝配置的難易程度、具體功能的易用性、參考文檔的完備性、二次開發(fā)的可能性等等進(jìn)行評(píng)估。通過(guò)技術(shù)分析,可以給各個(gè)開源軟件打分排名,在此基礎(chǔ)上可以淘汰掉得分最低的選項(xiàng)。
(3)在商務(wù)分析階段,必須明確決策者是否愿意為開源的解決方案付費(fèi)。如果決策者不愿意為付費(fèi),那么該項(xiàng)目就屬于“愿意花費(fèi)時(shí)間來(lái)省錢”的場(chǎng)景,反之則屬于“愿意花錢來(lái)節(jié)約時(shí)間”的場(chǎng)景。對(duì)于愿意花費(fèi)時(shí)間來(lái)省錢的應(yīng)用場(chǎng)景,主要依賴于開源社區(qū)獲得技術(shù)支持,可以將開源項(xiàng)目的社區(qū)活躍度作為重要的參考數(shù)據(jù)。對(duì)于愿意花錢來(lái)節(jié)省時(shí)間的應(yīng)用場(chǎng)景,主要依賴于服務(wù)提供商獲得技術(shù)支持,應(yīng)該重點(diǎn)考察服務(wù)提供商在業(yè)界的影響力以及在本地的服務(wù)能力,開源項(xiàng)目的社區(qū)活躍度則顯得無(wú)關(guān)緊要了。
在中國(guó)(狹義上)的云計(jì)算市場(chǎng), 對(duì)于愿意付費(fèi)的客戶來(lái)說(shuō),CloudStack和Eucalyptus是值得優(yōu)先考慮的選項(xiàng)。這兩個(gè)項(xiàng)目的啟動(dòng)時(shí)間比較早,具有更好的穩(wěn)定性和可靠性,在業(yè)界有較大的影響力,并且在國(guó)內(nèi)有團(tuán)隊(duì)可以提供支持和服務(wù)。與此同時(shí),國(guó)內(nèi)一些創(chuàng)業(yè)團(tuán)隊(duì)開始提供基于OpenStack的解決方案,但是在短時(shí)間內(nèi)很難積累必要的實(shí)戰(zhàn)經(jīng)驗(yàn),而具備豐富經(jīng)驗(yàn)的新浪SAE團(tuán)隊(duì)尚未開拓對(duì)外提供技術(shù)支持的業(yè)務(wù)。國(guó)內(nèi)雖然也有一些單位在使用OpenNebula,但是在近期內(nèi)很難形成對(duì)第三方提供技術(shù)服務(wù)的能力。對(duì)于愿意花時(shí)間的客戶來(lái)說(shuō),CloudStack和OpenStack的優(yōu)勢(shì)較為明顯,因?yàn)閮烧叩纳鐓^(qū)活躍度相對(duì)較高。在這兩者當(dāng)中,CloudStack的功能更加豐富,也有更多的企業(yè)級(jí)客戶以及成功案例,可能是短期內(nèi)的更佳選擇。從長(zhǎng)遠(yuǎn)來(lái)看,基于OpenStack的解決方案會(huì)越來(lái)越流行,但是其他解決方案在技術(shù)和市場(chǎng)上也都在不斷取得進(jìn)步,因此在未來(lái)三年內(nèi)很難形成一統(tǒng)天下的局面。單純從商業(yè)上考慮,CloudStack和Eucalyptus獲得成功的幾率可能會(huì)更大一些。
G、其他
有些朋友希望我補(bǔ)充一些云計(jì)算在中國(guó)的現(xiàn)狀。坦率地說(shuō),目前我尚不掌握充足的數(shù)據(jù),在這里暫不展開論述。劉黎明最近發(fā)布了一篇題為《點(diǎn)評(píng)阿里云盛大云代表的云計(jì)算IaaS產(chǎn)業(yè)》的文章,值得參考。
關(guān)于不同開源項(xiàng)目的社區(qū)活躍度比較,可以參考我最近的一篇博客文章《CY12-Q3 OpenStack, OpenNebula,Eucalyptus,CloudStack社區(qū)活躍度比較》。另外,我在《HP Cloud Services性能測(cè)試》一文中,也初步提出了一個(gè)對(duì)公有云進(jìn)行性能評(píng)測(cè)的方法。
本文中的所有插圖,全部來(lái)自Google搜索。除此之外,部分概念性內(nèi)容參考了維基百科的相關(guān)條目進(jìn)行了改寫。(文/蔣清野 責(zé)編/包研)
聯(lián)系客服