米沃奇
企業(yè)IT基礎(chǔ)設(shè)施平臺(tái)的重新構(gòu)建是一項(xiàng)復(fù)雜的任務(wù)。重新構(gòu)建平臺(tái)通常由一系列變化的關(guān)鍵業(yè)務(wù)驅(qū)動(dòng)因素引發(fā)。簡(jiǎn)而言之,目前主導(dǎo)企業(yè)IT技術(shù)的平臺(tái)無(wú)法再滿足工作負(fù)載的需求。
數(shù)字化轉(zhuǎn)型的核心是數(shù)據(jù),它已成為商業(yè)中最有價(jià)值的事務(wù)。由于格式相互之間不兼容導(dǎo)致無(wú)法合并來(lái)自多個(gè)來(lái)源的數(shù)據(jù),新興技術(shù)的出現(xiàn)有望改變這一切。
改善軟件部署模式是消除數(shù)據(jù)使用障礙的一個(gè)主要方面。更高的“數(shù)據(jù)靈活性”還需要更靈活的數(shù)據(jù)庫(kù)和可擴(kuò)展性的實(shí)時(shí)流式傳輸平臺(tái)。實(shí)際上,至少有七種基礎(chǔ)技術(shù)可以結(jié)合在一起,為企業(yè)提供一種靈活的、實(shí)時(shí)的“數(shù)據(jù)結(jié)構(gòu)”。
與他們正在取代的技術(shù)不同,這七種軟件創(chuàng)新能夠擴(kuò)展以滿足用戶需求。對(duì)于企業(yè)而言,他們有能力實(shí)現(xiàn)更快、更明智的決策,并創(chuàng)造更好的客戶體驗(yàn)。
一、NoSQL數(shù)據(jù)庫(kù)
RDBMS在數(shù)據(jù)庫(kù)市場(chǎng)上占據(jù)了近30年的主導(dǎo)地位。但是,面對(duì)數(shù)據(jù)量的不斷增長(zhǎng)以及數(shù)據(jù)處理速度的加快,傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)已經(jīng)顯示出其不足。
NoSQL數(shù)據(jù)庫(kù)由于其速度和擴(kuò)展能力而被接管。就文檔數(shù)據(jù)庫(kù)而言,它們從軟件工程的角度提供了_一個(gè)更簡(jiǎn)單的模型。這種更簡(jiǎn)單的開發(fā)模式可加快產(chǎn)品上市速度,并幫助企業(yè)更快地響應(yīng)客戶和內(nèi)部用戶的需求。
二、實(shí)時(shí)流媒體平臺(tái)
實(shí)時(shí)響應(yīng)客戶對(duì)客戶體驗(yàn)至關(guān)重要。在過(guò)去的10年中面向消費(fèi)者的行業(yè)經(jīng)歷了巨大的顛覆。這與企業(yè)對(duì)用戶實(shí)時(shí)做出反應(yīng)的能力有關(guān)。轉(zhuǎn)向?qū)崟r(shí)模型需要事件流。
消息驅(qū)動(dòng)的應(yīng)用程序已存在多年。然而,如今的流媒體平臺(tái)的規(guī)模比以往要大得多,成本要低得多。最近流媒體技術(shù)的進(jìn)步為許多優(yōu)化業(yè)務(wù)的新方式打開了大門。通過(guò)為軟件開發(fā)和測(cè)試團(tuán)隊(duì)提供實(shí)時(shí)反饋循環(huán),事件流還可以幫助企業(yè)提高產(chǎn)品質(zhì)量,并更快地開發(fā)新的軟件。
三、Docker和容器
容器對(duì)開發(fā)人員和操作人員,以及組織本身都有很大的好處。傳統(tǒng)的基礎(chǔ)設(shè)施隔離方法是靜態(tài)分區(qū),即為每個(gè)工作負(fù)載分配一個(gè)單獨(dú)的固定資源塊(無(wú)論是物理服務(wù)器還是虛擬機(jī))。靜態(tài)分區(qū)可以更容易排除故障,但是實(shí)質(zhì)性未充分利用的硬件成本很高。例如,Web服務(wù)器平均只使用了可用總計(jì)算量的10%。
容器技術(shù)的巨大好處是它能夠創(chuàng)造一種新的隔離方式。那些最了解容器的人員可能會(huì)相信他們可以通過(guò)使用Ansible、Puppet或Chef等工具來(lái)獲得同樣的好處,但實(shí)際上這些技術(shù)具有很強(qiáng)的互補(bǔ)性。此外,無(wú)論企業(yè)如何努力,這些自動(dòng)化工具都無(wú)法實(shí)現(xiàn)在不同基礎(chǔ)設(shè)施和硬件設(shè)置之間自由移動(dòng)工作負(fù)載所需的隔離。同一個(gè)容器可以在本地?cái)?shù)據(jù)中心的裸機(jī)硬件上或公共云中的虛擬機(jī)上運(yùn)行,無(wú)須進(jìn)行任何更改。這是真正的工作負(fù)載移動(dòng)性。
四、容器存儲(chǔ)庫(kù)
容器存儲(chǔ)庫(kù)對(duì)于敏捷性至關(guān)重要。如果沒(méi)有用于構(gòu)建容器映像的DevOps進(jìn)程以及用于存儲(chǔ)它們的回收站,每個(gè)容器都必須建立在每一臺(tái)機(jī)器中,才可以運(yùn)行。通過(guò)存儲(chǔ)庫(kù),可以在讀取該存儲(chǔ)庫(kù)的計(jì)算機(jī)上啟動(dòng)容器映像。在多個(gè)數(shù)據(jù)中心處理時(shí),這變得更加復(fù)雜。如果在一個(gè)數(shù)據(jù)中心內(nèi)建立_個(gè)容器圖像,那么如何將圖像移動(dòng)到另一個(gè)數(shù)據(jù)中心?理想情況下通過(guò)利用融合數(shù)據(jù)平臺(tái),企業(yè)將有能力在數(shù)據(jù)中心之間對(duì)存儲(chǔ)庫(kù)實(shí)現(xiàn)鏡像。
這里的一個(gè)關(guān)鍵細(xì)節(jié)是,內(nèi)部部署和云計(jì)算之間的鏡像功能可能與企業(yè)的數(shù)據(jù)中心之間的鏡像功能差異很大。融合數(shù)據(jù)平臺(tái)將通過(guò)提供這些功能為企業(yè)解決這個(gè)問(wèn)題,而不管組織中使用的是數(shù)據(jù)中心基礎(chǔ)設(shè)施還是云計(jì)算基礎(chǔ)設(shè)施。
五、容器編排
每個(gè)容器看起來(lái)都有它自己的私有操作系統(tǒng),而不是靜態(tài)硬件分區(qū)。與虛擬機(jī)不同,容器不需要計(jì)算和內(nèi)存的靜態(tài)分區(qū)。這使管理員能夠在服務(wù)器上啟動(dòng)大量容器,而無(wú)須擔(dān)心內(nèi)存容量不夠使用。有了像Kubernetes這樣的容器編排工具,啟動(dòng)容器,移動(dòng)它們并在環(huán)境中的其他地方重新啟動(dòng)容器變得非常容易。
在新的基礎(chǔ)設(shè)施組件到位之后,諸女IMapR-DB或MongoDB之類的文檔數(shù)據(jù)庫(kù),MapR-ES或ApacheKafka之類的事件流式傳輸平臺(tái)(諸如Kubernetes之類的編排工具),以及在Docker容器中實(shí)現(xiàn)用于構(gòu)建和部署軟件的DevOps過(guò)程之后,人們必須了解應(yīng)該在這些容器中部署哪些組件的問(wèn)題。
六、微服務(wù)
微服務(wù)已不是什么新鮮概念。如今的差異在于,啟用技術(shù)(NoSQL數(shù)據(jù)庫(kù)、事件流、容器編排)可以隨著數(shù)千個(gè)微服務(wù)的創(chuàng)建而擴(kuò)展。如果沒(méi)有這些數(shù)據(jù)存儲(chǔ)、事件流和架構(gòu)編排的新方法,大規(guī)模微服務(wù)部署將不可能實(shí)現(xiàn)。管理大量數(shù)據(jù)、事件和容器實(shí)例所需的基礎(chǔ)設(shè)施將無(wú)法擴(kuò)展到所需的級(jí)別。
微服務(wù)都是與敏捷性有關(guān)。微服務(wù)通常由一個(gè)功能或一小組功能組成。工作的功能單元越小且越集中,創(chuàng)建、測(cè)試和部署服務(wù)就越容易。這些服務(wù)必須解耦,否則企業(yè)將失去具有敏捷性的微服務(wù)承諾。微服務(wù)可以依賴于其他服務(wù),但通常通過(guò)負(fù)載平衡的REST API或事件流。通過(guò)使用事件流,企業(yè)可以利用請(qǐng)求和響應(yīng)主題輕松跟蹤事件的歷史記錄。由于整個(gè)請(qǐng)求流和請(qǐng)求中的所有數(shù)據(jù)都可以在任何時(shí)間點(diǎn)重播,因此這種方法對(duì)故障排除具有很大幫助。
由于微服務(wù)封裝了一小部分工作,并且由于它們彼此分離,所以隨著時(shí)間的推移更換或幾乎沒(méi)有障礙地升級(jí)服務(wù)。在原有模式下,依賴像RPC這樣的緊密耦合意味著不得不關(guān)閉所有連接,然后重新建立它們。負(fù)載均衡是實(shí)現(xiàn)這些的一個(gè)大問(wèn)題,因?yàn)槿斯づ渲檬顾鼈內(nèi)菀壮鲥e(cuò)。
七、功能即服務(wù)
正如人們已經(jīng)看到微服務(wù)在行業(yè)中占據(jù)主導(dǎo)地位,所以人們也會(huì)看到無(wú)服務(wù)器計(jì)算的興起或者可能更準(zhǔn)確地將其稱為功能即服務(wù)(FaaS)。FaaS以這樣一種方式創(chuàng)建微服務(wù),即代碼可以包裝在輕量級(jí)框架中,內(nèi)置于容器中,按需執(zhí)行(基于某種觸發(fā)器),然后自動(dòng)進(jìn)行負(fù)載平衡。FaaS的美妙之處在于它讓開發(fā)人員幾乎完全專注于該功能。因此,F(xiàn)aaS看起來(lái)是微服務(wù)方法的合乎邏輯的結(jié)論。
觸發(fā)事件是FaaS的關(guān)鍵組成部分。沒(méi)有它,只有在需要完成工作的情況下,才能調(diào)用功能和消耗資源。功能的自動(dòng)調(diào)用使得FaaS真正具有價(jià)值。如果每當(dāng)有人讀取用戶的配置文件時(shí),都會(huì)有一個(gè)審計(jì)事件,這是一個(gè)必須運(yùn)行以通知安全團(tuán)隊(duì)的功能。更具體地說(shuō),它可能僅過(guò)濾出某些類型的記錄。它可以是具有選擇性的,畢竟它是一個(gè)完全可定制的業(yè)務(wù)功能。需要注意的是,使用像FaaS這樣的部署模型來(lái)完成這樣的工作流程非常簡(jiǎn)單。