在我們完成云堆棧的構(gòu)建工作——即實現(xiàn)平臺即服務(wù)(簡稱PaaS)、規(guī)模化容器乃至開發(fā)工具集中的各類工具選項——之前,我們首先需要建立良好的操作系統(tǒng)基礎(chǔ)以支持這些容器系統(tǒng)。
對于云堆棧而言,良好的基礎(chǔ)應(yīng)當(dāng)具備出色的靈活性并經(jīng)得起反復(fù)考驗。
當(dāng)我們著手進(jìn)行應(yīng)用程序開發(fā)時,大家必須首先投入數(shù)小時、數(shù)天甚至數(shù)年以完善自己的規(guī)劃。大家不僅需要學(xué)習(xí)相關(guān)編程語言及概念,同時也需要學(xué)習(xí)如何做出正確的架構(gòu)決策,從而為正在開發(fā)中的全部應(yīng)用程序提供堅實的運行基礎(chǔ)。
問題在于,我們往往需要盡可能忽略自己當(dāng)前正在構(gòu)建的環(huán)境。如今應(yīng)用程序開發(fā)者幫助我們拓寬了視野,通過引入云計算、平臺即服務(wù)以及容器技術(shù)等方案深化我們對于環(huán)境工具選項的理解。
萬事萬物皆需要基礎(chǔ)。堅實的基礎(chǔ)將成為后續(xù)發(fā)展的重要故障。我們具體選擇物理結(jié)構(gòu)抑或是應(yīng)用程序及云堆棧等實現(xiàn)方式其實并不重要,真正重要的是無論怎樣的上層建筑都需要由最基本的“磚塊”構(gòu)成。
而為了檢查這“第一塊磚”,我們需要著眼于云堆棧并了解全部應(yīng)用程序的開發(fā)基礎(chǔ)。在立足于云堆棧的情況下,我們往往會迷失在浩如煙海的工作流、容器以及應(yīng)用開發(fā)復(fù)雜性等要素當(dāng)中。
在完成云堆棧的構(gòu)建之前——其中包括平臺即服務(wù)(簡稱PaaS)、規(guī)模化容器以及各類開發(fā)工具——我們首先需要建立操作系統(tǒng)基礎(chǔ)以支持各容器系統(tǒng)。
基本基礎(chǔ)
我們的云堆棧基礎(chǔ)將采用Linux的企業(yè)版本,即紅帽企業(yè)Linux(簡稱RHEL)。
云基礎(chǔ)始于RHEL與RHEL Atomic。
我們當(dāng)前使用的是RHEL 7版本,其中包含用于創(chuàng)建并托管容器系統(tǒng)的全部集成化支持要素。
在選擇RHEL作為我們的操作系統(tǒng)之后,我們還需要利用RHEL Atoic在基礎(chǔ)層中實現(xiàn)容器支持能力。這是一套基于Linux的輕量化發(fā)行版,專門面向容器進(jìn)行設(shè)計。其中囊括了運行容器所必需的各項組件,因此大家可以將其視為一套“設(shè)備”——因為我們已經(jīng)無法再向其中添加任何軟件。
作為應(yīng)用程序開發(fā)者,大家肯定比較傾向于使用個人開發(fā)操作系統(tǒng),例如Windows或者某些Unix版本。不過考慮到容器系統(tǒng)的部署與托管需求,我們必須利用Docker工具集實現(xiàn)鏡像的容器化處理。我們只需要保證自己的云堆棧能夠托管這些應(yīng)用即可,而不必過多擔(dān)心其開發(fā)環(huán)境以及如何將其添加到RHEL或者RHEL Atomic基礎(chǔ)層之上。
在管理這套業(yè)務(wù)體系時,大家真正需要關(guān)注的正是這套負(fù)責(zé)承載容器并在其開發(fā)、測試與生產(chǎn)部署過程中始終提供管理能力的基礎(chǔ)層。
除了管理各類企業(yè)級基礎(chǔ)設(shè)施所必需的操作任務(wù)之外,我們還需要利用DevOps機(jī)制管理現(xiàn)代容器化開發(fā)工作流。這些結(jié)構(gòu)化環(huán)境能夠支持現(xiàn)代企業(yè)所必需的敏捷開發(fā)方法,從而始終與客戶不斷變化的實際需求保持一致。
這部分容器化開發(fā)環(huán)境必須支持持續(xù)集成(簡稱CI)、容器化微服務(wù)即時測試以及持續(xù)部署(簡稱CD),從而以自動化方式支持現(xiàn)代敏捷企業(yè)開發(fā)者日常工作中大量涉及的持續(xù)變更任務(wù)。
規(guī)模不斷升級
利用以上基礎(chǔ)努力維護(hù)、更新并管理一套靈活的DevOps基礎(chǔ)設(shè)施將很快成為業(yè)界共識。大家甚至?xí)l(fā)現(xiàn)這種以容器為載體的開發(fā)及部署途徑即將成為我們甘之如飴的最佳實踐方案。
云堆棧示意圖
無需恐懼,容器的規(guī)模化調(diào)整并不是什么可怕的狀況。除了可擴(kuò)展能力之外,我們還需要跨越各主機(jī)進(jìn)行容器系統(tǒng)管理,從而確保應(yīng)用程序開發(fā)團(tuán)隊在業(yè)務(wù)發(fā)展過程中始終具備必要的基礎(chǔ)設(shè)施與工具供應(yīng)。