13種你需要了解的云原生工具
SUSE收購(gòu)Rancher
Pure Storage收購(gòu)Portworx
Veeam收購(gòu)Kasten
VMware收購(gòu)Octarine
Mirantis收購(gòu)Lens IDE
思科收購(gòu)Banzai Cloud
New Relic收購(gòu)Pixie Labs
云原生市場(chǎng)趨于整合
........
以上是過(guò)去一年云原生行業(yè)發(fā)生的并購(gòu)案,可以看到,各家廠商都在積極地?fù)肀г圃?、搶占市?chǎng)先機(jī),云原生極大的釋放了云的紅利,代表著云的新發(fā)展趨勢(shì)。正確的選擇云原生技術(shù)有助于提高應(yīng)用的開(kāi)發(fā)速度,減少運(yùn)維的復(fù)雜性,并提高基礎(chǔ)設(shè)施的利用率。
本文將介紹13種實(shí)現(xiàn)云原生所需的工具。
什么是云原生?
云原生是利用云的優(yōu)勢(shì)來(lái)更快地處理業(yè)務(wù)并降低IT成本,云原生計(jì)算基金會(huì)(CNCF)對(duì)云原生的官方定義是:
“云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格(Service Mesh)、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。
這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。”
簡(jiǎn)而言之,云原生的目標(biāo)就是根據(jù)需求快速、敏捷地向用戶交付軟件產(chǎn)品。
為什么云原生很重要?
云原生應(yīng)用程序只需要小型團(tuán)隊(duì)就可以快速構(gòu)建,它部署的平臺(tái)可進(jìn)行擴(kuò)展和硬件解耦,這為企業(yè)跨云環(huán)境提供了極大的敏捷性、靈活性和可移植性。
(1) 競(jìng)爭(zhēng)優(yōu)勢(shì)
云原生開(kāi)發(fā)能夠節(jié)省IT成本,這意味著團(tuán)隊(duì)有更多的精力去拓展業(yè)務(wù)。在軟件時(shí)代,能夠及時(shí)響應(yīng)客戶需求,快速構(gòu)建和交付應(yīng)用程序的企業(yè)更有競(jìng)爭(zhēng)力。
(2) 彈性擴(kuò)展
傳統(tǒng)基礎(chǔ)架構(gòu)在發(fā)生故障時(shí),服務(wù)很可能會(huì)受到影響。在云原生系統(tǒng)中的彈性架構(gòu)可以快速擴(kuò)展,這有助于企業(yè)構(gòu)建一種保持在線的系統(tǒng),而不用考慮環(huán)境中的問(wèn)題。
(3) 靈活性
借助支持云原生開(kāi)發(fā)的平臺(tái),企業(yè)無(wú)需修改即可構(gòu)建任何云上運(yùn)行的應(yīng)用程序。不受時(shí)間空間限制,企業(yè)可以在最有商業(yè)意義的情況下運(yùn)行應(yīng)用程序和服務(wù),避免了云鎖定。
(4) 運(yùn)營(yíng)始終與業(yè)務(wù)需求保持一致
通過(guò)使IT運(yùn)營(yíng)自動(dòng)化,企業(yè)可以將精力更多地放在業(yè)務(wù)上,并且消除了由人為錯(cuò)誤造成的失敗風(fēng)險(xiǎn)。在堆棧的各個(gè)級(jí)別上自動(dòng)化實(shí)時(shí)補(bǔ)丁和升級(jí),消除了停機(jī)時(shí)間,并且節(jié)省了人工勞動(dòng)力。
云原生工具
以下是業(yè)界常用的云原生工具及方法。各大公司通過(guò)使用它們,實(shí)現(xiàn)了更快的產(chǎn)品交付,更少的摩擦,以及更低的開(kāi)發(fā)與維護(hù)成本。
1. 微服務(wù)
微服務(wù)是一種云原生架構(gòu)方法,其中單個(gè)應(yīng)用程序由許多松散耦合且可獨(dú)立部署的較小組件或服務(wù)組成。在傳統(tǒng)的部署中,通常只有一個(gè)網(wǎng)站服務(wù)來(lái)管理API和客戶交互,若使用微服務(wù),我們就可以將該網(wǎng)站分解為多種服務(wù),例如結(jié)帳服務(wù)和用戶服務(wù),我們可以分別開(kāi)發(fā),部署和擴(kuò)展這些服務(wù)。此外,微服務(wù)通常是無(wú)狀態(tài)的,公司可充分利用云原生提供的靈活性。
推薦技術(shù):Node.js
替代技術(shù):Kotlin,Golang
2. CI / CD
CI / CD的主要概念是持續(xù)集成,持續(xù)交付和持續(xù)部署。這種方法簡(jiǎn)單而言就是在應(yīng)用程序的整個(gè)生命周期(從集成和測(cè)試階段到交付和部署)中引入了持續(xù)的自動(dòng)化和連續(xù)監(jiān)控。使用CI / CD,公司能夠即使并且靈活地實(shí)施質(zhì)量檢驗(yàn),例如單元測(cè)試,靜態(tài)分析或安全性分析??傊?,CI / CD是云原生生態(tài)系統(tǒng)中的基礎(chǔ)工具,可以提高工程效率并減少錯(cuò)誤。
推薦技術(shù):Gitlab CI / CD
替代技術(shù):Github Actions
3. 容器
容器是云原生生態(tài)系統(tǒng)的核心,它通過(guò)簡(jiǎn)化開(kāi)發(fā)人員的操作極大地提升了開(kāi)發(fā)速度和質(zhì)量。通過(guò)使用容器(例如Docker),團(tuán)隊(duì)可以指定其系統(tǒng)依賴(lài)關(guān)系,同時(shí)提供統(tǒng)一通用的執(zhí)行層,該層使基礎(chǔ)架構(gòu)團(tuán)隊(duì)能夠操作單個(gè)基礎(chǔ)設(shè)施,例如容器編排工具(如Kubernetes)。工程團(tuán)隊(duì)可以將容器映像存儲(chǔ)在容器注冊(cè)表中,在大多數(shù)情況下,該注冊(cè)表還提供漏洞分析和細(xì)粒度訪問(wèn)控制。這方面流行的服務(wù)有Docker Hub,Google Container Registry或Quay。
推薦技術(shù):Docker
替代技術(shù):Podman , LXD
4. 容器編排
容器編排是用于啟動(dòng)和管理大量容器的工具,不需要特定語(yǔ)言或特定團(tuán)隊(duì)的部署策略。容器編排允許用戶指定某個(gè)映像或某個(gè)映像組的配置,最后,編排器采用這些規(guī)范并將其轉(zhuǎn)換為運(yùn)行的工作負(fù)載。容器編排器使基礎(chǔ)設(shè)施團(tuán)隊(duì)可以維護(hù)單個(gè)基礎(chǔ)設(shè)施組件,該組件可以執(zhí)行任何符合OCI規(guī)范的容器。
推薦技術(shù):Kubernetes
替代技術(shù):Google Cloud Run
5. 基礎(chǔ)架構(gòu)即代碼
基礎(chǔ)設(shè)施即代碼是一種通過(guò)代碼來(lái)定義計(jì)算和網(wǎng)絡(luò)基礎(chǔ)設(shè)施的方法,它可以應(yīng)用于任何軟件系統(tǒng)中。這樣的代碼放在源代碼管理中,具有可審查性、可重用型,并且符合測(cè)試慣例,還完全遵從持續(xù)交付的原則。
公司一般通過(guò)管理面板手動(dòng)配置云資源,但是,手動(dòng)配置很難跟蹤更改?;A(chǔ)架構(gòu)即代碼通過(guò)將云資源定義為代碼并將其置于版本控制之下來(lái)解決該問(wèn)題。在代碼中的基礎(chǔ)設(shè)施配置中進(jìn)行更改,并通過(guò)公司的部署過(guò)程(包括同行評(píng)審、CI/CD)進(jìn)行升級(jí)。版本控制提供了一個(gè)審核日志,顯示誰(shuí)更改了哪些資源以及更改的時(shí)間。
推薦技術(shù):Terraform
替代技術(shù):Pulumi
6. 隱私管理
隱私管理對(duì)于云原生解決方案至關(guān)重要,但總是被忽略。這里的隱私可以是任何私密的東西,例如密碼,私鑰和API憑據(jù)。成熟的解決方案支持發(fā)布臨時(shí)數(shù)據(jù)庫(kù)憑證或輪換憑證,使隱私管理更加安全。一個(gè)合適的隱私管理解決方案對(duì)于云原生應(yīng)用非常重要,因?yàn)槿萜骰?wù)可以水平擴(kuò)展,并且可以在許多不同的設(shè)備上調(diào)度,忽略隱私管理的組織可能會(huì)增加數(shù)據(jù)泄漏的風(fēng)險(xiǎn)。
推薦技術(shù):Vault
替代技術(shù):Sealed Secrets
7. 認(rèn)證
通過(guò)TLS保證通信安全是必不可少的。這在基于容器的解決方案中尤其重要,因?yàn)樵S多不同的服務(wù)可能在同一臺(tái)物理計(jì)算機(jī)上運(yùn)行。如果不進(jìn)行加密,攻擊者就可以獲得主機(jī)網(wǎng)絡(luò)的訪問(wèn)權(quán)限,他們可以讀取這些服務(wù)之間的所有流量??傊謩?dòng)更新云本地部署的證書(shū)是站不住腳的,這就是為什么某種自動(dòng)化解決方案是必不可少的。
推薦技術(shù):cert-manager
替代技術(shù):Google managed certificates
8. API網(wǎng)關(guān)
API網(wǎng)關(guān)是反向代理,比起傳統(tǒng)反向代理(例如Apache和NGINX),API網(wǎng)關(guān)還支持:
- gRPC、HTTP/2和Websockets等協(xié)議
- 動(dòng)態(tài)配置
- 雙向TLS
- 路由
- 提供諸如速率限制和電路中斷等云服務(wù)彈性功能
- 提供各類(lèi)監(jiān)控指標(biāo)的可見(jiàn)化
推薦技術(shù):Kong
替代技術(shù):Ambassador
9. 日志
日志是可觀察性的基礎(chǔ)。日志對(duì)于了解系統(tǒng)中正在發(fā)生的事情至關(guān)重要,而且對(duì)于調(diào)試系統(tǒng)也非常有幫助。云原生工具強(qiáng)調(diào)指標(biāo)的時(shí)間序列,因?yàn)樗鼈儽却鎯?chǔ)日志更具成本效益。
推薦技術(shù):EFK
替代技術(shù):Loki
10. 監(jiān)控
我們可以為監(jiān)控指標(biāo)分配不同的維度,以深入了解單個(gè)計(jì)算機(jī)、操作系統(tǒng)、版本等性能。監(jiān)視系統(tǒng)會(huì)將重要事件按時(shí)間順序存儲(chǔ),但它不會(huì)存儲(chǔ)所有事件。這使其對(duì)于云本機(jī)系統(tǒng)具有成本效益,用戶可以為監(jiān)視指標(biāo)分配不同的維度,以深入了解單個(gè)計(jì)算機(jī)、操作系統(tǒng)、版本等的性能。
推薦技術(shù):Prometheus、Grafana
替代技術(shù):Datadog
11. 警報(bào)
警報(bào)可將系統(tǒng)問(wèn)題通知操作員,例如,當(dāng)HTTP 500狀態(tài)代碼增加或請(qǐng)求持續(xù)時(shí)間增加時(shí),警報(bào)就會(huì)通知團(tuán)隊(duì)。警報(bào)對(duì)于云原生系統(tǒng)非常重要,沒(méi)有警報(bào),公司就不知道出現(xiàn)了問(wèn)題。
推薦技術(shù):Prometheus Alertmanager
替代技術(shù):Grafana Alerts
12. 追蹤
云原生技術(shù)減少了擴(kuò)展服務(wù)的成本,因此,我們可以推出更多的服務(wù)。追蹤技術(shù)能夠監(jiān)視服務(wù)之間的通信,并將整個(gè)事務(wù)中的每個(gè)階段都進(jìn)行可視化,當(dāng)出現(xiàn)性能問(wèn)題時(shí),團(tuán)隊(duì)可以查看發(fā)生了哪些服務(wù)錯(cuò)誤以及事務(wù)的每個(gè)階段花費(fèi)了多長(zhǎng)時(shí)間。追蹤技術(shù)使團(tuán)隊(duì)可以更快地調(diào)試問(wèn)題,減少停機(jī)時(shí)間。
推薦技術(shù):Jaeger
替代技術(shù):Zipkin
13. 服務(wù)網(wǎng)格
作為上述功能的綜合,云服務(wù)網(wǎng)格可以提供動(dòng)態(tài)路由、負(fù)載平衡、服務(wù)發(fā)現(xiàn)、網(wǎng)絡(luò)策略,以及包括斷路器和重試機(jī)制在內(nèi)的云服務(wù)彈性功能。我們可以將服務(wù)網(wǎng)格視為云計(jì)算原生架構(gòu)在負(fù)載平衡方面的一種演進(jìn)。
推薦技術(shù):Istio
替代技術(shù):Consul
通過(guò)靈活地選用上述云原生工具,我們可以適當(dāng)?shù)靥岣咴品?wù)產(chǎn)品的交付速度,增加服務(wù)的可用性與性能,以及保持企業(yè)的競(jìng)爭(zhēng)優(yōu)勢(shì)。
參考:https://codersociety.com/blog/articles/cloud-native-tools