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