1. 程式人生 > 資訊 >CNCF 2020 雲原生應用調查報告:容器應用率自 2016 年增長 300%

CNCF 2020 雲原生應用調查報告:容器應用率自 2016 年增長 300%

目前,CNCF 社群正持續發展,使用者對開源技術的應用也越來越突出。

這是 CNCF 第八次對雲原生應用的採用情況進行調研。此次調研,CNCF 收到了來自社群共計 1324 份有效樣本,來自歐洲、北美、亞洲等主要地區,其中有 30% 以上是 5000 人規模以上企業,60% 以上為 100 人規模企業和組織。

從被調研物件來看,其中絕大多數為企業IT部門 / 組織,主要崗位包括 SRE/DevOps 工程師(43%)、軟體架構師 (35%)和後端開發人員 (23%)。

調研核心要點:

  • 在生產中應用容器的比例從去年的 84% 增長到今年的 92%,相比 2016 年增長了 300%。

  • 生產中應用 Kubernetes 的比例從去年的 78% 增長到今年的 83%。

  • CNCF 託管的所有專案中,相比上一年投入應用的專案至少有 50% 的增長。

  • 82% 的受訪者在生產中應用 CI/CD(持續整合和持續交付)。

  • 30% 的受訪者在生產中應用無服務架構(serverless)。

  • 27% 的受訪者在生產中應用服務網格(service mesh),相比去年增長了 50%。

  • 55% 的受訪者在生產中的容器中執行有狀態應用程式(stateful application)。

一、雲端計算

結論:公有云仍是主流,但私有云在不斷增長

公有云仍是如今最主流的資料中心改造路徑,其應用率從去年的 62% 略有增加到 64%;私有云或本地部署應用率從 45% 增加到 52%;混合雲從去年的 38% 略有下降到 36%。多雲在今年是一種新的策略,其應用率在 26%。

Kubernetes 和雲原生工具的可移植性,使得不同雲之間的切換變得更加簡單。不過多雲策略的提升,並不完全能解釋混合雲應用率下降的原因。

二、程式碼

結論:版本發行週期加快,但自動化能力卻有所下降

軟體發行的比例從去年的 27% 上升至 29%。其中,以周為發行週期最為常見(26%)。一些因素推動了這一趨勢的發展,如雲原生技術在生產中不斷投入應用;企業組織構建了更先進的IT基礎設施;以及新冠疫情的影響,迫使企業需要跟上數字化的需求。

53% 的受訪者幾乎每天都要對程式碼進行 check in,80% 的人也會做到每週進行幾次 check in。

這或許意味著許多企業組織由於設定週期的複雜性,而不打算直接跳到自動化階段,或者企業希望保持對應用某些方面的控制。

當涉及硬體等裝置時,比如虛擬機器和裸金屬伺服器的數量,無論是擁有 5000 臺以上的企業還是擁有 5 臺以下的企業數量都在增加,這表明:新的採用者已經進入生態系統,而此前應用了容器部署的企業正持續追加新的硬體裝置。

三、容器

結論:在生產中應用容器已是常態

今年,92% 的受訪者表示在生產中部署了容器技術。其中,95% 的企業在 PoC、測試和開發環境中應用容器,同比上一年均有所增加。這可能意味著企業正準備測試新的用例或增加更多的工作負載。

同時,執行容器的企業數量也有所增加。其中,61% 的企業應用容器數量超過了 250,同比去年仍有所增加。

  • 容器挑戰

部署和應用容器的挑戰有很多,其中最為迫切的是容器技術的複雜性和工程師文化問題。排名第三的是安全問題(佔 32%),其次還有儲存、缺乏培訓、監測、網服務網格等問題。

四、Kubernetes

結論:Kubernetes 仍是容器構建的核心關注點

今年,91% 的受訪者應用了 Kubernetes,其中有 83% 已經投入在生產環境中。這一比例相比上一年的 78% 和 2018 年的 58%,表現出了持續穩定增長的趨勢。

其中,2 至 5 個仍然是最常見的生產叢集數;11 個以上生產叢集的比例也在逐年增加。

隨著 Kubernetes 技術的投入應用,其生態也在不斷擴張。2020 年 8 月,Kubernetes 釋出了 1.19 版本。根據 DevStats 看板上的資料,從 2020 年 4 月至 8 月期間,有 382 家公司和 2400 多人向 Kubernetes 社群捐獻程式碼。

為此,指導委員會推出了一個名為 Kubernetes.dev 的網站,它以貢獻開原始碼的文件、資料和專案資訊都收集起來。

  • 隔離 Kubernetes 叢集

名稱空間(Namespaces)仍是隔離 Kubernetes 叢集的最主流方法。無論是個人還是企業組織,同比上一年都有所增長。

  • Kubernetes 安裝環境

Kubernetes 應用最多的安裝環境分別是:Minikube(37%)、On-PremKubernetes(31%)和 Docker Kubernetes(29%)。其中,On-Prem 的比例在今年所有上升。

  • 自動彈性伸縮工作負載

今年,絕大多數受訪者(71%)計劃換成自動彈性伸縮的無狀態應用,一部分受訪者(34%)計劃用任務 / 佇列處理應用,還有一部分(33%)計劃執行有狀態的應用。

五、CNCF 專案情況

結論:專案應用量增加了 50%

CNCF 目前擁有 70 多個專案,包括 13 個畢業階段和 21 個孵化階段的專案。

其中,Kubernetes(83%)、Prometheus(69%)和 Helm(67%)是生產中應用最多的畢業專案;ETC(62%)、CNI(40%)和 gRPC(35%)則是生產中應用最多的孵化專案。

沙箱階段的專案應用率猛增了 238%。其中,生產中應用最多的專案是 Flux(8%)、OpenEBS(8%)和網路服務網格(7%);受到最多評估的專案則是 OpenTelemetry(20%)、Service Mesh Interface(14%)和 OpenMetrics(14%)。

六、雲原生工具

結論:CI/CD 和儲存工具被廣泛應用,而無服務、服務網格和服務代理正在增長。

  • 持續整合和持續交付(CI/CD)

CI/CD 對於自動化構建、測試和部署應用程式至關重要。CI/CD 作為 DevOps 的一個重要方面,在生產中得到了廣泛應用。

大約 82% 的受訪者在生產中應用 CI/CD;10% 的仍在評估階段;4% 的則計劃在未來 12 個月內執行 CI/CD。

CI/CD 應用最為頻繁的三個工具分別是:Jenkins(53%)、GitLab(36%)和 GitHubActions(20%)。

連續交付(CD)是 CNCF 終端使用者技術雷達圖(基於社群使用者經驗來評估雲原生技術的指南)中的一項主題。根據雷達圖能夠發現,Flux 和 Helm 無疑是 CD 最廣泛採用的工具。

  • 監測、日誌記錄和跟蹤

監測、日誌記錄和跟蹤往往被混淆為觀察和分析IT環境的可置換工具,但每個工具都有其獨特用途。這也要求其有從不同維度分析問題的能力。不同的工具在不同的技術環境和整合下具備不同的優勢,這也意味著監測、日誌記錄和跟蹤工具同時應用時將具備強大的作用。

CNCF 的第二張終端使用者技術雷達圖,正是專注於這一特徵。根據雷達圖能夠發現,50% 以上的公司會應用五種或五種以上的工具,三分之一的公司甚至有應用十種以上工具的經驗。同時,這些工具往往都是開源的,比如 Prometheus、Grafana、Elastic、Jaeger、OpenTelemetry 等等。

七、無服務

在過去的幾年裡,無服務計算——應用服務層或函式計算來動態配置和部署雲環境的計算負載,已經開始佔有一席之地。

從目前看,不到 30% 的受訪者在生產中應用無服務技術;21% 的正在評估無服務,還有 14% 的計劃在未來 12 個月進行應用。

大多數應用無服務技術的受訪者(60%)會應用託管平臺;13% 的應用可安裝軟體,22% 的會二者兼用。

無服務託管平臺排名前三的分別是亞馬遜的 Lambda(57%)、Google 雲函式(27%)和 Azure 函式(24%);可安裝軟體應用排名前三的分別是 Knative(27%)、Open FaaS(10%)和 Kubeless(5%)。

  • 服務網格

服務網格(Service Mesh)是一個專用的基礎架構層,保障服務之間的通訊快捷、安全和可靠。

去年,18% 的受訪者在生產中應用了服務網格;47% 還在評估中。到了今年,生產中應用服務網格這一數字佔比增長到 27%;23% 的還在評估中;另外有 19% 的受訪者計劃在未來 12 月內應用。

  • 服務代理

服務代理(Service Proxy)通過對微服務之間的互動進行管理,以確保應用效能達到峰值。它可以用來簡化數字化轉型和雲原生架構的運營。

今年 37% 的受訪者在生產中應用服務代理;有 12% 正在評估服務代理;另外有 13% 計劃在未來 12 個月內應用服務代理。

  • 儲存

近年來雲原生儲存已呈爆炸式增長,其衍生產品已擴充套件到包括集中式、分散式和超融合架構等。

在最開始的一段時間,容器往往被用來執行無狀態的微服務應用,以保證其靈活性和便捷性。然而,如今的資料表明:只有 22% 的受訪者在生產中執行無狀態應用;55% 的執行有狀態應用;22% 還在評估中;11% 計劃在未來 12 個月內應用。

  • 雲原生的優勢

對於那些在生產中應用容器和雲原生專案的企業而言,其中有 51% 將其最大的優勢歸結為改進的可伸縮性和更短的部署時間;44% 則歸結為改進的可用性。這一結果與上一年相比稍有不同。