什么是云原生?
什么是云原生?
我相信大部分人都聽過云原生,但是要你說出一個所以然,卻不知道怎么開口,我也是一樣。
我不知道云原生到底是什么,從字面來看:云原生就是為云而生。云是什么?我理解云就是云計算,那云原生就是在云計算的基礎之上設計實現,充分利用云的彈性、分布式等特性,讓應用能夠實現彈性伸縮、動態調度,也能更高的提升資源利用率。
發展歷程
在說云原生之前,先來看看云計算的發展歷程。
從上面的時間線來看,云計算的技術演進是朝著越來越靈活的方向發展。其核心單元從早期的物理服務器、變成后來的虛擬機,再到現在的容器,其靈活性越來越高,啟動速度越來越快,不可變基礎設施逐漸成為主流,軟件技術棧也逐漸從商業軟件走向開源。
不知道你有沒有發現,云原生其實是云計算發展歷程中的一種產物。
云原生不是一個新的概念,它是云計算發展的過程中對理念的更新和延申。在云原生時代,希望讓應用更有彈性、容錯性、可觀測性,讓應用更容易部署、管理編寫、編排等,希望開發者能夠更好的利用云的資源、產品以及交付能力。
下邊大致梳理云原生的發展歷程。截止目前(2022年6月),CNCF成員已經有810個,參與的開發者高達15W,其中的明星項目如Kubernetes、Envoy等受到大眾非常喜歡。
云原生全景圖(?https://github.com/cncf/landscape):
核心理念
云原生技術有助于企業在公有云、私有云和混合云等新型動態環境中構建和運行可彈性擴展的應用。
云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施以及聲明式API。
隨著云原生的發展,其核心理念如下:(1)利用容器和服務網格技術,解耦軟件開發,提高業務開發部署的靈活性和可維護性;(2)以Kubernetes為核心的開源技術棧被各大產商所支持,用戶的選擇多,避免了產商綁定;(3)以Kubernetes為核心的松耦合架構,易擴展,避免侵入式定制;(4)對應用提供中心式的編排、動態管理以及調度,提高了工作效率和資料利用率;
在最近幾年,云原生技術呈現如下幾種趨勢:(1)軟硬一體化:傳統基礎設施的網絡、存儲、計算能力與云原生技術生態開始深度對接;(2)基于網格的服務治理能力:服務治理與業務邏輯逐步解耦,服務治理能力下沉到基礎設施,服務網格以基礎設施的方式提供無侵入的連接控制、安全、可監測性、灰度發布等治理能力;(3)有狀態應用向云原生遷移:無狀態+Job類應用趨于成熟,有狀態應用逐步成為云原生市場中新的增長點。Operator 的出現,為有狀態應用在云原生基礎設施上運行提供一套行之有效的標準規范,降低了使用門檻,使有狀態應用得以真正發展;(4)多云統一管理和多云業務流量統一調度:云原生北向API區域穩定,用戶更多開始關注跨區域、跨平臺、跨云大規模可復制能力;
代表技術
云原生的主要代表技術如下:(1)容器 容器不是新鮮的事物,在Docker發布之前就有需要容器技術,比如CGroups、LXC等,Docker受歡迎的一個主要原因是它的鏡像技術——分層的鏡像構建。
(2)Kubernetes Kubernetes的聲明式API是面向開發者提供全新的分布式原語。
針對期望狀態給出聲明,而不是針對過程 API對象彼此互補、可組合
(3)服務網格 服務網格通過非侵入式的方式接管應用的服務通信。對于每個業務單元/模塊來說,他們甚至不需要對網絡通信、負載均衡等有任何的感知。
服務網格提供細粒度流量治理,包括灰度發布、故障注入、可觀測性支持等能力,提高了業務應用的易維護性 對于企業開發者來說,服務網格可以很好地幫助他們剝離業務代碼和分布式框架
平臺團隊聚焦框架層的開發和調優 業務團隊聚焦業務本身的開發
技術在不斷的變革,云原生的定義也在不斷的變化,而且以云原生理念而誕生的技術也越來越多,最終云原生究竟如何定義現在也未可知,咱們只有拭目以待。