如果你研究過云原生應(yīng)用程序和相關(guān)技術(shù),大概率你遇到過 CNCF 的云原生全景圖。這張全景圖技術(shù)之多規(guī)模之大無疑會讓人感到震驚,該如何去理解這張圖呢? 如果把它拆開來一次只分析一小塊內(nèi)容,你會發(fā)現(xiàn)整個全景圖沒有那么復(fù)雜。事實上,該全景圖按照功能有序地組織在一起,一旦你了解了每個類別代表的內(nèi)容,你就可以輕松游走于全景圖中。 云原生全景圖的 4 層 首先,我們剝離掉所有單個的技術(shù),僅查看類別(如下圖)。圖中有不同的“行”,像建筑的不同層,每層都有自己的子類別。最底層提供了構(gòu)建云原生基礎(chǔ)設(shè)施的工具。往上,你可以開始添加運行和管理應(yīng)用程序所需的工具,比如運行時和調(diào)度層。在最上層,有定義和開發(fā)應(yīng)用程序的工具,比如數(shù)據(jù)庫、鏡像構(gòu)建和 CI/CD 工具(我們將在后文討論)。 供應(yīng)指的是為云原生應(yīng)用準(zhǔn)備標(biāo)準(zhǔn)基礎(chǔ)環(huán)境所涉及的工具。它包含了基礎(chǔ)設(shè)施的創(chuàng)建、管理、配置流程的自動化,以及容器鏡像的掃描、簽名和存儲等。供應(yīng)層通過提供設(shè)置和實施策略,在應(yīng)用程序和平臺中構(gòu)建身份驗證和授權(quán),以及處理密鑰分發(fā)等等的工具,也拓展到了安全領(lǐng)域。 供應(yīng)層包括:
這些工具使工程師可以編寫基礎(chǔ)設(shè)施參數(shù),使系統(tǒng)可以按需搭建新環(huán)境,確保了一致性和安全性。 運行時層(Runtime)接下來是運行時層。這個詞可能會讓你感到迷惑。像很多 IT 術(shù)語一樣,運行時沒有嚴(yán)格的定義,且可以根據(jù)語境有不同的用法。狹義上講,運行時是特定機器上準(zhǔn)備運行應(yīng)用程序的沙盒——也就是保障應(yīng)用程序正常運行所需的最低配置。廣義上講,運行時是運行一個應(yīng)用程序所需的所有工具。 在 CNCF 云原生全景圖中,運行時保障了容器化應(yīng)用程序組件的運行和通信, 包括:
編排和管理層(Orchestration and Management)一旦按照安全和合規(guī)性標(biāo)準(zhǔn)(供應(yīng)層)自動化基礎(chǔ)設(shè)施供應(yīng),并安裝了應(yīng)用程序運行所需的工具(運行時層),工程師就需要弄清楚如何編排和管理應(yīng)用程序。編排和管理層將所有容器化服務(wù)(應(yīng)用程序組件)作為一個群組管理。這些容器化服務(wù)需要相互識別和通信,并需要進行協(xié)調(diào)。這一層可為云原生應(yīng)用提供自動化和彈性能力,使云原生應(yīng)用天然具有可擴展性。 這一層包含:
應(yīng)用定義和開發(fā)層 (Application Definition and Developement)現(xiàn)在,我們來到了最頂層。應(yīng)用定義和開發(fā)層,顧名思義,聚集了讓工程師構(gòu)建和運行應(yīng)用程序的工具。上述所有內(nèi)容都是關(guān)于構(gòu)建可靠、安全的環(huán)境,以及提供全部所需的應(yīng)用程序依賴。 這一層包括:
可觀察性和分析(Observability and Analysis)為了限制服務(wù)中斷并降低解決問題的平均時間(MRRT),你需要監(jiān)控和分析應(yīng)用層序的方方面面,以便在出現(xiàn)異常時可立即發(fā)現(xiàn)并糾正。復(fù)雜環(huán)境中容易出現(xiàn)故障,這些工具可快速識別并解決故障,從而降低故障帶來的影響。由于這一類別貫穿并監(jiān)控各層,因此它在側(cè)面,而不是嵌入到某一層中。 這這一類別你將發(fā)現(xiàn):
平臺類(Platform)可以看到,圖中每一個模塊解決一個特定的問題。但我們知道,僅有存儲并不能提供應(yīng)用程序所需的全部功能。你還需要編排工具,容器運行時,服務(wù)發(fā)現(xiàn),網(wǎng)絡(luò),API 網(wǎng)關(guān)等等。平臺覆蓋多層,將不同的工具組合在一起,以解決更大的問題。 配置和微調(diào)不同的模塊使其安全可靠,并確保它利用的技術(shù)都能及時更新、所有漏洞都打了補丁,這并不是一件容易的事情。使用平臺時,用戶不用額外擔(dān)心這些細(xì)節(jié)問題。 你可能會注意到,所有的類別都圍繞著 Kubernetes 展開。這是因為 Kubernetes 雖然只是云原生景觀圖這張拼圖中的一塊,但它卻是云原生技術(shù)棧的核心。順便說一下,CNCF 剛創(chuàng)建時,Kubernetes 就是其中的第一個種子項目,后來才有了其他項目。 平臺可分為四類:
在每個類別中,針對相同或相似的問題,都有不同的工具可選擇。有一些是適用于新現(xiàn)實的預(yù)云原生技術(shù),還有一些則是全新的。區(qū)別在于它們的實現(xiàn)和設(shè)計方法。沒有完美的技術(shù)符合你的所有需求。大多數(shù)情況下,技術(shù)受設(shè)計和架構(gòu)選擇的限制——始終需要權(quán)衡取舍。 在選擇技術(shù)棧時,工程師必須仔細(xì)考慮每種能力和需要權(quán)衡取舍的地方,以確定最合適的選項。雖然這樣會讓情況變得更復(fù)雜,但在選擇應(yīng)用程序所需的最適合的數(shù)據(jù)存儲、基礎(chǔ)設(shè)施管理、消息系統(tǒng)等方案時,這樣做是最可行的辦法。現(xiàn)在,構(gòu)建一個系統(tǒng)比云原生之前的時代容易多了。如果構(gòu)建恰當(dāng),云原生技術(shù)將提供更強大的靈活性。在現(xiàn)如今快速變化的技術(shù)生態(tài)中,這可能是最重要的能力之一。 |
|