在云原生計算方面缺少什么?結果、代碼、狀態、信任。
混合IT、超融合基礎設施、多云、容器、微服務。IT基礎設施的發展速度如此之快,以至于人們的腳下也可能是即將噴發熔巖的島嶼,因此必須找到一些穩定的核心島嶼,以免被變化的創新和顛覆的巖漿所吞噬。
好消息是,人們有這樣一個島嶼:云原生計算。
將云計算帶給IT環境
云原生計算采用云計算的最佳實踐——橫向可擴展性、彈性和最終用戶可配置性等,并將其擴展到整個IT環境。
正如云計算通常將硬件和整個物理層抽象化一樣,云原生計算將此原則擴展到所有內部環境。因此,云原生方法是混合IT的基礎,它試圖抽象多個公共云、私有云、內部虛擬化和遺留環境,為人們提供端到端、基于策略的控制和工作負載可遷移性。
但是,云原生計算超越了混合IT。它還認識到容器化是現代IT基礎設施的核心,不僅是唯一的,而且在從傳統虛擬化到無服務器計算的范圍內。
不出所料,Kubernetes成為當今實施云原生基礎設施的核心,盡管并非所有云原生方法都利用它。
也許考慮云原生計算的最重要方式是作為一種架構方法。云原生架構建立在云計算和DevOps最佳實踐的基礎上,將它們從云計算本身帶到了企業IT團隊。
只有一個問題:云原生甚至不僅僅是一種方法,因為它改變了人們必須關注IT基礎設施的方式。實際上它代表了一個鏡頭,通過這個鏡頭,人們可以在全新的視野中看待企業IT。出于這個原因,它是一種新的架構范式。
“Less”#1:無代碼
具有諷刺意味的是,了解云原生架構的范式轉換能力的最佳方式是強調其中缺少的內容:云原生代碼是無代碼、無信任、無狀態的。
并不是說人們不必處理狀態信息或編寫代碼,也不是不相信任何事情。相反,這三個“Less”方式描述了人們在所做的每件事中都必須追求的核心云計算原則。
“無代碼”適用于人們如何組裝和配置IT基礎設施的元素,并直接遵循軟件定義的最佳實踐。當人們說軟件定義網絡中的“軟件定義”時,意味著人們可以將所討論系統的行為表示為基于元數據的模型,這些模型的行為是聲明性的。
“基礎設施即代碼”的移動是這個故事的一部分,只有在使用云原生時,人們才希望在描述和配置系統行為的方式上不再采用代碼。相反,人們希望它們是可配置和可擴展的,而不是可定制的。
因此,Kubernetes遵循這樣的做法并非巧合。甚至Kubernetes的各種“風格”都共享一個代碼庫。這種從可定制性到可擴展性優先級的轉變,是由于學習了之前技術的經驗和教訓——從定制企業應用程序的昂貴工具到大量不同版本的Linux。
此外,雖然云原生基礎設施的可配置性是無代碼故事的一部分,但它也擴展到在該基礎設施上運行的應用程序。因此,低代碼和無代碼應用程序創建平臺也遵循無代碼原則,這是沒有錯的。
事實上,無代碼因此將幾種現有趨勢組合成單一的體系結構范例,其中包括軟件定義的方法、聲明性配置、模型驅動的計算以及可定制性的可擴展性。
“Less”#2:無信任
“無信任”或者網絡安全專業人士也稱之為“零信任”,是現代網絡安全的基本特征。人們不能再依賴外圍安全性來提供可信賴的環境。相反,人們必須假設網絡的所有部分都是不可信的,并且每個端點都必須建立自己的信任。
因此,Kubernetes呼吁進行無信任的互動并不奇怪。微服務端點是動態的,因此這些抽象端點必須處理自己的安全性。
當然,無可靠性超越了Kubernetes和容器的世界。無服務器計算基本上是無信任的,因為功能端點現在是完全抽象的,因此負責其自身的安全性。
物聯網和邊緣計算的興起
隨著端點的數量和種類的爆炸性增長,物聯網和邊緣計算的興起增加了無信任計算的風險。事實上,除非人們采取無信任的方法,否則無法充分保護物聯網。
事實上,當人們考慮在企業物聯網部署環境中管理安全性時,除非底層架構也是無代碼且完全由策略驅動,否則根本就沒有有效的方法。因此,無信任和無代碼是齊頭并進的。
“Less”#3:無狀態
無狀態也許是三個“Less ”方式中最難理解的,主要是因為狀態在現代架構方法中的角色轉變。
在客戶端/服務器和n層體系結構中,在持久層(數據庫)中管理狀態。隨著人們學習擴展n層體系結構,在緩存中管理狀態變得越來越重要,而如今,緩存是云計算的重要組成部分,因此通常是云原生基礎設施。
然而現在,容器和微服務提高了管理狀態的風險。容器本質上是無狀態的,是其固有短暫性的必然副作用。畢竟,如果數據在一瞬間消失,人們就不希望將數據存儲在一個數據中。
無狀態也是容器快速可擴展性和彈性的秘密之一。虛擬機可能需要幾分鐘才能啟動,而容器化微服務(以及無服務器功能)需要幾毫秒,主要是因為它們是無狀態的。
然而,管理狀態與以往一樣重要,因為大多數應用程序需要某種形式的數據持久性,如果只是為了跟蹤應用程序在任何時刻正在做什么。因此,必須在一個固有的無狀態環境中處理狀態,應用程序由無狀態微服務組成,這些微服務知道如何處理信息而不存儲信息。
為了在無狀態環境中實現狀態管理,Kubernetes采用云原生架構方法,通過無代碼、聲明性原則抽象存儲,并通過API公開這些有狀態資源。
這種方法允許組織從其持久層獲得可用性和彈性,而不需要容器本身是有狀態的。此外,由于狀態管理完全依賴于API,因此以無信任的方式保護此類端點至關重要。
然而,在三個“Less”方式中,無狀態仍然是最大的挑戰,也是最具活力的創新領域。預計未來幾年該領域將取得重大進展。
隨著應用程序在云原生環境中向上和向下擴展,微服務在毫秒級別上出現和消失。此外,用于部署此類微服務的持續集成 (CI) / 持續交付(CD)方法將持續出現新的和不斷變化的微服務。
配置基礎設施以大規模處理此類動態行為的唯一方法是通過無代碼方法。保護此類應用程序資產的唯一方法是通過無信任。這些應用程序可以跟蹤任何事物,并且仍然可以擴展的唯一方法是在固有的無狀態環境中管理狀態。
無信任正在成為網絡安全領域日益占主導地位的最佳實踐。隨著低代碼/無代碼平臺的興起以及Kubernetes和其他現代基礎設施軟件的可配置性,無代碼性也正在建立。
隨著短暫容器和微服務的興起,無狀態也在核心云原生架構原則中占有一席之地。
許多組織已經在這些實踐中的一個或兩個方面取得了進展。很少有人采用這三種方法,也很少有人采用這三個“Less”方式開發出云原生的架構。
但是不要搞錯,為了支持新的架構,這三個“Less”方式的組合是企業IT的發展方向。云原生計算將繼續存在,并且隨著它不斷發展,那些沒有向前發展的組織將在數字時代發現自己處于越來越不利的地位。