13 款你需要了解的雲原生工具
來源 | https://codersociety.com/blog/articles/cloud-native-tools
今天,我將跟大家分享 13 款實現雲原生所需的工具。
什麼是雲原生?
雲原生是利用雲的優勢來更快地處理業務並降低 IT 成本,雲原生計算基金會 (CNCF) 對雲原生的官方定義是:
“雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格 (Service Mesh)、微服務、不可變基礎設施和聲明式 API。
這些技術能夠構建容錯性好、易於管理和便於觀察的松耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。”
簡而言之,雲原生的目標就是根據需求快速、敏捷地向用戶交付軟件產品。
爲什麼雲原生很重要?
雲原生應用程序只需要小型團隊就可以快速構建,它部署的平臺可進行擴展和硬件解耦,這爲企業跨雲環境提供了極大的敏捷性、靈活性和可移植性。
(1) 競爭優勢
雲原生開發能夠節省 IT 成本,這意味着團隊有更多的精力去拓展業務。在軟件時代,能夠及時響應客戶需求,快速構建和交付應用程序的企業更有競爭力。
(2) 彈性擴展
傳統基礎架構在發生故障時,服務很可能會受到影響。在雲原生系統中的彈性架構可以快速擴展,這有助於企業構建一種保持在線的系統,而不用考慮環境中的問題。
(3) 靈活性
藉助支持雲原生開發的平臺,企業無需修改即可構建任何雲上運行的應用程序。不受時間空間限制,企業可以在最有商業意義的情況下運行應用程序和服務,避免了雲鎖定。
(4) 運營始終與業務需求保持一致
通過使 IT 運營自動化,企業可以將精力更多地放在業務上,並且消除了由人爲錯誤造成的失敗風險。在堆棧的各個級別上自動化實時補丁和升級,消除了停機時間,並且節省了人工勞動力。
雲原生工具
以下是業界常用的雲原生工具及方法。各大公司通過使用它們,實現了更快的產品交付,更少的摩擦,以及更低的開發與維護成本。
1、 微服務
微服務是一種雲原生架構方法,其中單個應用程序由許多鬆散耦合且可獨立部署的較小組件或服務組成。在傳統的部署中,通常只有一個網站服務來管理 API 和客戶交互,若使用微服務,我們就可以將該網站分解爲多種服務,例如結帳服務和用戶服務,我們可以分別開發,部署和擴展這些服務。此外,微服務通常是無狀態的,公司可充分利用雲原生提供的靈活性。
推薦技術:Node.js
替代技術:Kotlin,Golang
2、 CI / CD
CI / CD 的主要概念是持續集成,持續交付和持續部署。這種方法簡單而言就是在應用程序的整個生命週期 (從集成和測試階段到交付和部署) 中引入了持續的自動化和連續監控。使用 CI / CD,公司能夠即使並且靈活地實施質量檢驗,例如單元測試,靜態分析或安全性分析。總之,CI / CD 是雲原生生態系統中的基礎工具,可以提高工程效率並減少錯誤。
推薦技術:Gitlab CI / CD
替代技術:Github Actions
3、容器
容器是雲原生生態系統的核心,它通過簡化開發人員的操作極大地提升了開發速度和質量。通過使用容器 (例如 Docker),團隊可以指定其系統依賴關係,同時提供統一通用的執行層,該層使基礎架構團隊能夠操作單個基礎設施,例如容器編排工具 (如 Kubernetes)。
工程團隊可以將容器映像存儲在容器註冊表中,在大多數情況下,該註冊表還提供漏洞分析和細粒度訪問控制。這方面流行的服務有 Docker Hub,Google Container Registry 或 Quay。
推薦技術:Docker
替代技術:Podman , LXD
4、容器編排
容器編排是用於啓動和管理大量容器的工具,不需要特定語言或特定團隊的部署策略。容器編排允許用戶指定某個映像或某個映像組的配置,最後,編排器採用這些規範並將其轉換爲運行的工作負載。容器編排器使基礎設施團隊可以維護單個基礎設施組件,該組件可以執行任何符合 OCI 規範的容器。
推薦技術:Kubernetes
替代技術:Google Cloud Run
5、基礎架構即代碼
基礎設施即代碼是一種通過代碼來定義計算和網絡基礎設施的方法,它可以應用於任何軟件系統中。這樣的代碼放在源代碼管理中,具有可審查性、可重用型,並且符合測試慣例,還完全遵從持續交付的原則。
公司一般通過管理面板手動配置雲資源,但是,手動配置很難跟蹤更改。基礎架構即代碼通過將雲資源定義爲代碼並將其置於版本控制之下來解決該問題。在代碼中的基礎設施配置中進行更改,並通過公司的部署過程 (包括同行評審、CI/CD) 進行升級。版本控制提供了一個審覈日誌,顯示誰更改了哪些資源以及更改的時間。
推薦技術:Terraform
替代技術:Pulumi
6、隱私管理
隱私管理對於雲原生解決方案至關重要,但總是被忽略。這裏的隱私可以是任何私密的東西,例如密碼,私鑰和 API 憑據。成熟的解決方案支持發佈臨時數據庫憑證或輪換憑證,使隱私管理更加安全。一個合適的隱私管理解決方案對於雲原生應用非常重要,因爲容器化服務可以水平擴展,並且可以在許多不同的設備上調度,忽略隱私管理的組織可能會增加數據泄漏的風險。
推薦技術:Vault
替代技術:Sealed Secrets
7、 認證
通過 TLS 保證通信安全是必不可少的。這在基於容器的解決方案中尤其重要,因爲許多不同的服務可能在同一臺物理計算機上運行。如果不進行加密,攻擊者就可以獲得主機網絡的訪問權限,他們可以讀取這些服務之間的所有流量。總之,手動更新雲本地部署的證書是站不住腳的,這就是爲什麼某種自動化解決方案是必不可少的。
推薦技術:cert-manager
替代技術:Google managed certificates
8、API 網關
API 網關是反向代理,比起傳統反向代理 (例如 Apache 和 NGINX),API 網關還支持:
-
gRPC、HTTP/2 和 Websockets 等協議
-
動態配置
-
雙向 TLS
-
路由
-
提供諸如速率限制和電路中斷等雲服務彈性功能
-
提供各類監控指標的可見化
推薦技術:Kong
替代技術:Ambassador
9、日誌
日誌是可觀察性的基礎。日誌對於瞭解系統中正在發生的事情至關重要,而且對於調試系統也非常有幫助。雲原生工具強調指標的時間序列,因爲它們比存儲日誌更具成本效益。
推薦技術:EFK
替代技術:Loki
10、監控
我們可以爲監控指標分配不同的維度,以深入瞭解單個計算機、操作系統、版本等性能。監視系統會將重要事件按時間順序存儲,但它不會存儲所有事件。這使其對於雲本機系統具有成本效益,用戶可以爲監視指標分配不同的維度,以深入瞭解單個計算機、操作系統、版本等的性能。
推薦技術:Prometheus、Grafana
替代技術:Datadog
11、警報
警報可將系統問題通知操作員,例如,當 HTTP 500 狀態代碼增加或請求持續時間增加時,警報就會通知團隊。警報對於雲原生系統非常重要,沒有警報,公司就不知道出現了問題。
推薦技術:Prometheus Alertmanager
替代技術:Grafana Alerts
12、追蹤
雲原生技術減少了擴展服務的成本,因此,我們可以推出更多的服務。追蹤技術能夠監視服務之間的通信,並將整個事務中的每個階段都進行可視化,當出現性能問題時,團隊可以查看發生了哪些服務錯誤以及事務的每個階段花費了多長時間。追蹤技術使團隊可以更快地調試問題,減少停機時間。
推薦技術:Jaeger
替代技術:Zipkin
13、 服務網格
作爲上述功能的綜合,雲服務網格可以提供動態路由、負載平衡、服務發現、網絡策略,以及包括斷路器和重試機制在內的雲服務彈性功能。我們可以將服務網格視爲雲計算原生架構在負載平衡方面的一種演進。
推薦技術:Istio
替代技術:Consul
通過靈活地選用上述雲原生工具,我們可以適當地提高雲服務產品的交付速度,增加服務的可用性與性能,以及保持企業的競爭優勢。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/gBvDMje4tAsdlnHmp3nk7Q