13種你需要了解的云原生工具
SUSE收購Rancher
Pure Storage收購Portworx
Veeam收購Kasten
VMware收購Octarine
Mirantis收購Lens IDE
思科收購Banzai Cloud
New Relic收購Pixie Labs
云原生市場趨于整合
........
以上是過去一年云原生行業發生的并購案,可以看到,各家廠商都在積極地擁抱云原生、搶占市場先機,云原生極大的釋放了云的紅利,代表著云的新發展趨勢。正確的選擇云原生技術有助于提高應用的開發速度,減少運維的復雜性,并提高基礎設施的利用率。
本文將介紹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
通過靈活地選用上述云原生工具,我們可以適當地提高云服務產品的交付速度,增加服務的可用性與性能,以及保持企業的競爭優勢。
參考:https://codersociety.com/blog/articles/cloud-native-tools