雖然創(chuàng)新的速度加快了,但是新技術(shù)的應(yīng)用卻沒有。很多組織采用了新的技術(shù),但沒有從舊的基礎(chǔ)設(shè)施模式中完全轉(zhuǎn)換到新的技術(shù)。隨著時(shí)間的推移,這導(dǎo)致了各種各樣的技術(shù)孤島。有些與之不同的是因?yàn)樗鼈兯褂玫臉?biāo)稱語言:Java,Python,Ruby,Go等。使用不同的云基礎(chǔ)設(shè)施管理平臺(tái):vSphere,OpenStack,AWS,Azure,Google等等。計(jì)算范例的不同:容器、虛擬機(jī)、裸機(jī)等等。更糟糕的是,這些技術(shù)孤島使得簡單的操作問題變得復(fù)雜,例如運(yùn)行某個(gè)應(yīng)用程序需要多少成本,運(yùn)行哪些應(yīng)用程序以及如何運(yùn)行。
排列的數(shù)量是壓倒性的,并且對(duì)于不同的使用情況和商業(yè)目的而言各自具有優(yōu)點(diǎn)和缺點(diǎn),不幸的是,使用標(biāo)準(zhǔn)作為一攬子方式來驅(qū)動(dòng)跨平臺(tái)兼容性和互操作性在目前變化如此之快的環(huán)境中無法正常工作。
例如,電信行業(yè)是非常標(biāo)準(zhǔn)化的。多年來,已經(jīng)形成了多個(gè)工作組來為電信棧的特定元素制定標(biāo)準(zhǔn)。最值得注意的是ETSI、MEF和TMForum。這種方式面臨的挑戰(zhàn)是項(xiàng)目的碎片化,互操作性的缺失促使我們找到一種方式來實(shí)現(xiàn)端到端一致的標(biāo)準(zhǔn),即所有層面都是一致的。
隨著電信應(yīng)用組合變得更加多樣化,運(yùn)營商無法通過購買單個(gè)廠商的交鑰匙解決方案來應(yīng)對(duì)所有問題,因?yàn)楦緵]有一個(gè)廠商或一個(gè)解決方案能夠覆蓋所有的用例。因此,互操作性的缺失正在造成越來越大的影響。
幸運(yùn)的是,在過去幾年中,我們已經(jīng)看到了很多開源項(xiàng)目(penStack,NoSQL,Docker,Kubernetes,ONAP)的涌現(xiàn),這些開源項(xiàng)目正在逐漸取代標(biāo)準(zhǔn)組織的地位,并且正在形成新的電信網(wǎng)絡(luò)棧。開源軟件為電信行業(yè)提供了除標(biāo)準(zhǔn)之外的更靈活的選擇,其采用量成為了衡量成功的主要標(biāo)準(zhǔn)。
以企業(yè)為例,企業(yè)直到10年前才被標(biāo)準(zhǔn)驅(qū)動(dòng)(如SQL,OMG,Java EE)。今天企業(yè)由標(biāo)準(zhǔn)機(jī)構(gòu)建立的標(biāo)準(zhǔn)正在被開源項(xiàng)目所取代,這些開源項(xiàng)目由于被廣泛采用而被視為實(shí)際的標(biāo)準(zhǔn)。
開源標(biāo)準(zhǔn)有很多積極的屬性。首先,這個(gè)過程比較民主,因?yàn)槊總€(gè)開發(fā)者都可以參與和貢獻(xiàn)。其次,政治影響力的最小化。最后,這個(gè)過程更加靈活并能夠快速創(chuàng)新,且沒有必要達(dá)成完全的共識(shí)也能取得進(jìn)展。此外,機(jī)關(guān)規(guī)范可以用很多不同的方式來解釋,雖然也不能夠確保兼容性,但是代碼是唯一的依賴標(biāo)準(zhǔn),且能夠通過定義來確?;ゲ僮餍?。
但是開源標(biāo)準(zhǔn)并非沒有挑戰(zhàn),通常不同開源項(xiàng)目之間的互操作性很小,這就形成了新的技術(shù)孤島。OpenStack基金會(huì)執(zhí)行董事Jonathan Bryce在2017年悉尼OpenStack峰會(huì)上表示,今天開源項(xiàng)目最大的問題不是創(chuàng)新而是一體化。
SDxCentral最新的2017年開源網(wǎng)絡(luò)報(bào)告中闡述了開源與標(biāo)準(zhǔn)之間的關(guān)系:對(duì)于以軟件為中心的解決方案而言,傳統(tǒng)的瀑布式模式作用有限,尤其是當(dāng)更新周期持續(xù)縮短時(shí),系統(tǒng)被設(shè)計(jì)為適應(yīng)不同的環(huán)境。需要更多的迭代聲明周期,將規(guī)范與實(shí)現(xiàn)相結(jié)合,并加速整個(gè)流程,盡管需要徹底改變,但最終目標(biāo)仍然是一樣的:多廠商互操作性。
如何找到一個(gè)能夠同時(shí)兼具開源和標(biāo)準(zhǔn)的媒介,以確保整合和最終的可擴(kuò)展性?
開源應(yīng)該推動(dòng)標(biāo)準(zhǔn),而不是取代標(biāo)準(zhǔn)
為了說明這一點(diǎn),我們來比較下標(biāo)準(zhǔn)驅(qū)動(dòng)和開源驅(qū)動(dòng)兩種方式。
標(biāo)準(zhǔn)驅(qū)動(dòng):ETSI在網(wǎng)絡(luò)功能虛擬化(NFV)行業(yè)中扮演著非常重要的角色,它定義了一個(gè)關(guān)于NFV系統(tǒng)的共同架構(gòu),并創(chuàng)建了一個(gè)共同的分類。然而,聲稱支持這種體系架構(gòu)的實(shí)際產(chǎn)品卻彼此大不相同,即便這些產(chǎn)品都聲稱支持ETSI,產(chǎn)品之間也沒有真正實(shí)現(xiàn)兼容性或互操作性。
開源驅(qū)動(dòng):ONAP正在采取不同的方式,使用開源方式作為領(lǐng)導(dǎo)通用標(biāo)準(zhǔn)的工具。ONAP首先采用開源運(yùn)營商的觀點(diǎn)來定義架構(gòu),現(xiàn)在正在從不同的標(biāo)準(zhǔn)機(jī)構(gòu)采用不同的相關(guān)部分,并將之整合到架構(gòu)中。間接地促使不同的標(biāo)準(zhǔn)機(jī)構(gòu)加強(qiáng)合作,這些機(jī)構(gòu)現(xiàn)在正在與ONAP保持一致。
兩者相比,我們可以看到ONAP的范圍與ETSI之間的差異,ONAP涵蓋了ETSI的有限的端到端體系架構(gòu)。
定義“恰到好處”的標(biāo)準(zhǔn)
標(biāo)準(zhǔn)應(yīng)該關(guān)注各種開源項(xiàng)目或云計(jì)算基礎(chǔ)設(shè)施之間的互操作性,而不是實(shí)施。我們?nèi)匀恍枰獦?biāo)準(zhǔn),但標(biāo)準(zhǔn)的范圍需要從定義底層架構(gòu),通過低級(jí)的詳細(xì)規(guī)范轉(zhuǎn)移到“恰到好處”的標(biāo)準(zhǔn),以確保不需要符合相同標(biāo)準(zhǔn)或API的項(xiàng)目之間的互操作性。
我們還應(yīng)該允許已經(jīng)使用的標(biāo)準(zhǔn)或架構(gòu)之間的集成和和操作性,而不是試圖不斷尋找新的標(biāo)準(zhǔn)。
IT行業(yè)需要擺脫定義每個(gè)部分的實(shí)施細(xì)節(jié),以定義一個(gè)“恰到好處”的標(biāo)準(zhǔn),以允許該行業(yè)在子系統(tǒng)實(shí)現(xiàn)互操作。因此,我們不必處理如何產(chǎn)生虛擬機(jī)或配置特定的網(wǎng)絡(luò)設(shè)備,而是關(guān)注系統(tǒng)和服務(wù)之間的互操作性。在這種模式下,標(biāo)準(zhǔn)最重要的作用不是避免鎖定,而是提供更高程度的抽象以實(shí)現(xiàn)足夠的互操作性,從而實(shí)現(xiàn)規(guī)模自動(dòng)化。
“恰到好處”的標(biāo)準(zhǔn)關(guān)注:
· 互操作性,而不是標(biāo)準(zhǔn)化的實(shí)施
· 抽象的需求,并滿足靈活性(符合相同的API是不需要的)
· 最大限度地減少差異,并提供一個(gè)一致性的架構(gòu)來實(shí)現(xiàn)差異性,而不是試圖掩蓋差異性
TOSCA項(xiàng)目提供了幾個(gè)很好的例子,說明了恰到好處的標(biāo)準(zhǔn)付諸行動(dòng)。TOSCA提供了一個(gè)相當(dāng)松散的耦合建模,可以很容易擴(kuò)展,以適應(yīng)特定的項(xiàng)目需求。
· 示例1:多云互操作性。TOSCA能夠?qū)崿F(xiàn)互操作性,而不影響最小公分母。在這種情況下,我們將需求的定義標(biāo)準(zhǔn)化,但要保持供應(yīng)的實(shí)施,這為給定需求和滿足該需求的各種資源之間的互操作性提供了高度的靈活性,而不必強(qiáng)迫這些資源符合相同的API作為先決條件。
· 示例2:TOSCA/YANG。TOSCA是在云環(huán)境中處理應(yīng)用程序生命周期的規(guī)范,YANG是通常用于定義網(wǎng)絡(luò)設(shè)備配置的規(guī)范。不要試圖擴(kuò)展TOSCA或YANG來涵蓋其他語言所缺失的部分,可以將這兩者結(jié)合起來,使它們彼此獨(dú)立。我們可以使用TOSCA來創(chuàng)建應(yīng)用程序并管理其生命周期,并使用YANG來配置實(shí)際的設(shè)備,實(shí)現(xiàn)兩全其美。
· 示例3:服務(wù)鏈。TOSCA支持在不同環(huán)境(例如Azure和OpenStack)上運(yùn)行的網(wǎng)絡(luò)服務(wù)以及不同的編排引擎(ONAP和Azure ARM)之間的互操作性。例如,在最近的一個(gè)項(xiàng)目中,我們?cè)贠penStack上啟動(dòng)了兩個(gè)Fortigate-one實(shí)例,另一個(gè)在Azure上啟動(dòng)。我們通過一個(gè)共同的TOSCA模型將這兩個(gè)實(shí)例粘在一起,通過Cloudify在這兩個(gè)服務(wù)之間創(chuàng)建了一個(gè)服務(wù)鏈。
“唯一不變的就是變化”,軟件創(chuàng)新科研帶來很多優(yōu)勢(shì),但是我們需要學(xué)習(xí)如何消除孤島,防止形成新的孤島,創(chuàng)造更高的互操作性,以及簡化操作的復(fù)雜性。上述的例子表明,通過采用標(biāo)準(zhǔn)的程序化方式,即便是在今天我們也可以實(shí)現(xiàn)這種互操作性。