2021年值得推薦的25個優秀DevOps工具
譯文【51CTO.com快譯】DevOps正在改變全球軟件開發行業的現狀。本文詳細介紹了當前可用的25個優秀DevOps工具。
在調研機構哈佛商業評論分析服務公司對軟件開發行業進行的一項調查中,超過80%的受訪者表示,DevOps正在以某種形式有效地為他們的工作增加價值;而48%的受訪者表示他們的公司依賴DevOps來提高效率。
調查表明,DevOps正在提高全球軟件開發公司的上市速度、可銷售性、創新和產品質量。 而2021年將是DevOps發展的重要一年。由于DevOps涵蓋了開發、運營、IT、安全和產品團隊,以及軟件開發的不同階段,因此有很多工具可供選擇。
以下將詳細介紹目前市場上可用的一些優秀DevOps工具,同時指出了持續集成(CI)/持續交付(CD)生命周期的重要類別。
一、配置管理類別
1.Puppet
Puppet是一種開源軟件配置管理和部署工具,通常用于確保將所有服務器都配置為所需的狀態。Puppet是基于代理的,通常用于Linux和Windows并同時控制多個應用程序服務器。Puppet主要用于客戶端/服務器配置,其中其管理的節點與服務器的配置保持同步。用戶采用Puppet的代碼管理工具R10K,可以更輕松地對持續集成(CI)/持續交付(CD)代碼實施自動化或人工更改、更新、審查和測試。用戶還可以使用R10K和Puppetfiles來創建環境的自動部署。這些基于代理的部署通常準確及時,并生成錯誤日志以供審查。
Puppet還提供了與Git的輕松集成以進行版本控制。
Puppet是聲明性的,通常適合基線而不是編排。
Puppet具有以下一些缺點:
- 整體運行緩慢。
- Puppet無法在不編寫自定義代碼的情況下檢查exec資源之外的系統狀態。
- Hiera是Puppet的鍵值配置數據查找系統,速度慢且難以排除故障。
2.Ansible
Ansible是一種開源配置管理和編排工具,以其簡單性和性能而聞名。Ansible在主機上運行,并使用SSH連接到節點。Ansible可以在任何安裝了Python 2(版本2.7)或Python 3(版本3.5及更高版本)的機器上運行,其中包括RedHat、Debian、CentOS、macOS和BSD。
采用Ansible讓使用YAML(另一種標記語言)管理配置變得非常容易。使用Ansible自動化跨平臺任務也很有效。還可以使用Ansible拉取模式從特定文件中獲取存儲庫和運行命令。用戶將shell腳本和配置文件轉換為Ansible Playbooks也很容易,并且有很多相關文檔可用。
Ansible具有以下一些缺點:
- 隨著系統規模擴大而擴展緩慢。
- 缺乏Windows支持。
- 需要跨數百臺服務器進行數百次大規模同步時效率低下。
3.Chef
Chef是一種開源DevOps工具,主要用于配置管理。Chef也基于主代理模型,因為Chef客戶端在每臺客戶端機器上運行(使用工具并通過SSH進行通信)。但是,Chef與Puppet的不同之處在于它的額外層,其名稱為工作站(Workstation),其中包含所有配置。這些配置首先在本地機器上自動測試,然后推送到服務器上。
當存在主機依賴時,Chef非常出色。它對系統的狀態(軟件包、現有用戶、目錄等)進行描述,并將其與代理的實時實例進行比較,確保對象保持同步。
Chef使用AWS OpsWorks等服務維護更大網絡的自動化功能在業界廣為人知。Chef Inspec還有助于確保用戶的網絡和部署的安全性和完整性。Chef InSpec是一個開源框架,允許對其應用程序進行自動和人工測試和審計。
盡管Chef具有強大的GUI,但必須了解Ruby才能利用Chef的基礎設施即代碼模型的真正力量,尤其是在涉及復雜任務和自定義時。用戶可以通過在Chef中編寫腳本來實現大量自定義,但在許多情況下這樣做并不是最佳選擇。
Chef具有以下一些缺點:
- 代理實例需要定期監聽主要節點來安裝更新。
- 初學者難以理解。
- 缺乏詳細的文檔。
- 缺乏按需可擴展性。
二、建造類別
4.Jenkins
Jenkins是一種用Java編寫的開源自動化服務,它可以充當持續集成(CI)工具,使開發人員可以更輕松地將新組件集成到軟件中以實現無縫集成。Jenkins使用插件進行集成來實現這一目標。
Jenkins偵聽新的拉取請求,將新的工作分支合并到主代碼中,運行自動化測試套件,生成新的測試數據,并報告失敗的情況,以及將最新的代碼更改部署到質量保證(QA)環境以進行人工測試。
Jenkins管道用于實現持續集成過程的自動化表達。用戶可以在管道中定義構建文件,將它們加載到SCM并配置作業變量。
Jenkins已經存在了很長時間,并且由于其成熟的生態系統、插件支持、文檔和社區,實際上已經成為一個標準。Jenkins在過去幾年中提供了幾次更新。它已成為許多公司的首選之一,因為它為管道和Docker集成提供了簡單的用戶體驗(UX)/語法。
Jenkins具有以下一些缺點:
- 要使用Jenkins,需要學習Groovy,并且缺乏一致性。Jenkins中的Groovy腳本不容易編寫和編輯,尤其是在需要進行大量更改時。
- 在許多情況下,用戶還需要人工配置用戶界面中的構建、硬編碼配置文件和寬松的訪問控制。
- 如果沒有JenkinsFile,Jenkins極難使用,JenkinsFile是一個文本文件,其中包含Jenkins管道的定義并被簽入源代碼管理。
5.TeamCity
TeamCity是一種高級持續集成(CI)工具,以其易于使用的界面、流暢的配置和創造性的功能而聞名。TeamCity在Java環境和Apache Tomcat服務器中運行,但也可以安裝在Windows和Linux服務器上。
那么應該選擇TeamCity嗎?這在很大程度上取決于用戶的需求。如果有預算,并且主要任務包括設置固定數量的構建代理,以便輕松地使用存儲庫快照和工件依賴項執行并行構建鏈,那么可以采用TeamCity。TeamCity也有一個非常可靠的文檔。TeamCity的“快照依賴項”功能允許用戶在整個管道中保持相同的源版本,而無需低級代碼實現。
但是,TeamCity會自動為用戶修復snowflake,必須為此使用配置工具或容器技術。 TeamCity基于模板的構建配置可以讓用戶的工作更輕松。
TeamCity還原生支持AWS、GCE和Azure中的代理自動擴展。它還通過插件支持VMware和Kubernetes,并與GitHub本地集成。
TeamCity具有以下一些缺點:
- 價格昂貴。
- 調試日志和錯誤日志難以解析和理解。
6.Bamboo
Bamboo是由Atlassian公司開發的持續集成和持續部署服務器。Bamboo的主要優勢之一是它能夠在單個工作流中自動化構建、測試和發布與其他Atlassian產品(例如JIRA、BitBucket、Stash、Hipchat和Confluence)集成,從而創建一個穩固的軟件開發和交付生態系統。
Bamboo還具有可靠、易于使用的圖形用戶界面(GUI)。 與BitBucket、Confluence和Jira的輕松集成是Bamboo的一大優勢。它還可以啟動類似cron的觸發器,如果用戶擁有審查分析、自動測試以及在員工不在辦公室時運行的自動例程,這些觸發器會派上用場。
但是Bamboo并不完美。以下是它具有的一些缺點:
- Bamboo的代碼分析能力不強。
- Bamboo無法集中構建配置。
- 沒有全局工具配置(用戶必須在代理上人工安裝工具)。
- Bamboo缺少憑據插件和支持,這意味著必須在每個相關Bamboo項目上推出密碼更改。
三、源代碼管理類別
7.GitHub
GitHub是全球數百萬人使用的流行的源代碼管理工具之一。GitHub的主要優勢包括易于使用的用戶界面(UI)、智能功能(如恢復意外刪除的數據)、防止產品刪除、多種集成和安全性。GitHub幾乎沒有中斷或停機,這使得它非常可靠。
GitHub擁有龐大的社區,非常適合開源項目。由于微軟公司擁有GitHub,因此Azure DevOps和Microsoft工具具有可靠的集成。GitHub使用戶可以更好地控制持續集成(CI)/持續交付(CD)過程。
但是,GitHub僅為每個存儲庫最多3個協作者提供免費的私有存儲庫。
8.BitBucket
BitBucket是一種軟件版本控制存儲庫服務,通常用于源代碼和開發項目。該服務基于Mercurial或Git版本控制系統。如果使用其他Atlassian產品,BitBucket會很有用。在管理大量回購方面,BitBucket也以其效率而聞名。免費的公共BitBucket存儲庫可以支持無限數量的用戶。
BitBucket還以其與JIRA和Confluence的無縫集成而聞名。BitBucket是涉及私人回購項目的首選。
BitBucket還為完整的持續集成(CI)/持續交付(CD)周期提供管道服務。
BitBucket具有以下一些缺點:
- BitBucket不提供正常運行時間服務等級協議(SLA)。
- 用戶界面有時可能令人困惑
9.GitLab
GitLab基于Git,為軟件開發提供版本控制、持續交付(CD)服務、部署和管道功能。由于其強大的持續交付(CD)服務,大多數用戶更喜歡使用GitLab進行源代碼管理。如果希望在自己的服務器上集成持續集成(CI)/持續交付(CD),GitLab是一種可行的方法,因為用戶實際上可以在其服務器上托管GitLab。GitLab是免費和開源的,并提供無限數量的免費私人存儲庫。
GitLab還允許用戶安裝私有實例,還提供容器注冊服務。
四、部署類別
10.Spinnaker
Spinnaker是一個開源持續交付(CD)軟件平臺,可與Kubernetes、Google Cloud Platform、AWS、Microsoft Azure和Oracle Cloud配合使用。它主要是一個部署和交付平臺,用于獲取用戶的工件并將其部署到生產中。
Spinnaker的儀表板和界面都非常易于使用。開發人員可以輕松地將他們的代碼推送到發布分支,該工具將自動構建、測試、驗證并將代碼推送到生產環境。借助Spinnaker,用戶可以使用無縫的Kubernetes、GitHub和Google的云平臺構建集成來輕松提交和部署對軟件的更改。
Spinnaker可以本地構建EC2AMI、配置ASG和設置負載均衡器。
Spinnaker具有以下一些缺點:
- 缺乏有效的可擴展性。
- 文檔稀缺。
- 任務實現自動化比較困難。
11.Octopus Deploy
Octopus Deploy是一種用于自動化部署的持續交付(CD)工具。它可以在代理或“觸手”上自動部署應用程序和服務。Octopus Deploy適用于ASP.NET Web應用程序、Java應用程序、NodeJS應用程序,并將自定義腳本運行到多種環境,包括AWS和Azure。大多數情況下,它與AzureDevOps一起使用,并受到了采用Microsoft生態系統的公司的青睞。
Octopus Deploy可以集成管道的持續交付(CD)基礎設施。用戶可以向Octopus發起API調用,以通過持續交付(CD)管道創建新版本并推送二進制文件。
Octopus Deploy具有以下一些缺點:
- 價格昂貴。
- 不能在項目之間導出變量。
12.Argo CD
Argo CD是一個聲明式GitOps持續部署工具,主要用于在Kubernetes集群內部署應用程序。
Argo CD強制同步Kubernetes清單,這些清單在Git存儲庫中描述應用程序。Argo CD可以自動應用更新或更改的清單以提交對集群的更改。Argo CD服務器可以跟蹤用戶的主要項目的部署分支。Argo CD還可以自動檢測何時將構建分支合并到部署分支中。Argo CD通過首先部署新版本的清單來防止停機。
Argo CD具有以下一些缺點:
- Argo CD不支持持續交付(集成),這意味著如果用戶想要一個完整的持續集成(CI)/持續交付(CD)管道,將需要采用其他工具,如Jenkins、Travis、Circle CI或Gitlab CI。
- 不支持回滾。
五、威脅和漏洞管理類別
13. TwistLock(Palo Alto Networks)
TwistLock為基于容器的應用程序提供威脅和漏洞。該服務以其與Kubernetes和Docker容器的集成而聞名。TwistLock現在歸Palo Alto Networks所有,通過其運行時應用安全保護和容器自動掃描提供運行時安全檢查。
TwistLock有一個強大的文檔。易于部署并強制優化資源消耗。它還以其持續集成(CI)/持續交付(CD)管道集成、對容器安全協議的強合規性和圖像掃描而聞名。
TwistLock還以其精細級別的安全分析而聞名。該服務還使用人工智能功能來了解用戶的運營環境,盡管一些用戶發現自動觸發的cron作業非常令人困惑。 他們還提供基于SaaS的安全掃描和本地解決方案。
14.Sysdig
Sysdig是一種用于云計算基礎設施、服務和應用程序的監控工具。Sysdig通常用于PaaS基礎設施上的容器安全和監控以及編排監控。
Sysdig還可用于監控OpenShift集群,因為它提供細粒度數據來分析指標。 使Sysdig脫穎而出的是其容器監控與編排層的強大集成。
如果用戶想深入了解進程級流量,Sysdig也很有用。Sysdig Opensource允許用戶在內核系統調用級別捕獲主機的詳細信息。捕獲過程也可以實現自動化,通過守護程序或直接代理過程部署為Docker容器。
其他一些功能包括:
- 網絡圖。
- 監控自托管安裝
- 監控基于AWS的系統
- 輕松集成
- 出色的客戶支持
15.Anchore
Anchore是一個完整的容器安全工作流解決方案,可與各種開發工具和平臺無縫集成。Anchore為一系列不同的應用程序提供量身定制的容器檢查和合規性解決方案,使團隊能夠遵守行業安全標準。
安全團隊可以審計和驗證整個組織的合規性。
其功能包括:
- 支持網絡,包括云托管或本地Kubernetes環境和持續集成(CI)/持續交付(CD)平臺
- 基于策略的安全性和合規性
- 檢查:
- 漏洞掃描
- 秘密和密碼
- 操作系統包
- 第三方庫
- Dockerfile檢查等
六、質量/測試類別
16.JMeter
JMeter是一種用于測試Web應用程序的負載測試工具。即使JMeter用于負載/性能測試,它仍然可以用于啟動API調用、狀態代碼和響應。JMeter還支持很多插件。
用戶還可以使用JMeter的并發池大小功能在測試期間為每個線程啟動多個連接。JMeter是獨立于平臺的,可以在不同環境下流暢運行。
用戶還可以通過多種方式查看測試結果,包括圖形、圖表、樹視圖、XML和JSON。
17.JUnit
JUnit是一種單元測試框架,主要用于Java應用程序。JUnit框架屬于Java框架的xUnit家族。
JUnit使用注解來幫助用戶確定應該在測試中使用的方法。其測試運行器功能也因其自定義功能而在開發者社區中享有盛譽。用戶還可以在JUnit中使用斷言來測試預期結果。
在JUnit中,用戶可以在多個參數之間使用不同的組合。使用JUnit為整個應用程序創建和管理豐富的單元測試用例套件變得非常容易。JUnit還可以在模塊或系統級測試之前自動測試應用程序的所有功能和單元。
18.Selenium
Selenium是一個端到端的測試軟件測試平臺,以其用戶友好的用戶界面而聞名,它允許測試人員模擬Web系統行為、發送API請求并分析系統行為。
Selenium允許用戶用RUBY或HTML編寫復雜和高級的測試腳本,以解決多個級別的復雜性。
Selenium為Web應用程序開發人員提供了一個完整的IDE,用于編輯、記錄和調試測試。用戶可以為多個測試用例設置自定義的起點和斷點。
Selenium的其他一些主要特性包括:
- 與多個開發平臺集成,如Jenkins、Maven、TestNG、QMetry、SauceLabs。
- 使用SeleniumGrid進行并行測試。
- 兼容所有主流語言,包括Java、Ruby、C#、PHP、JavaScript、Perl和R。
19.SonarQube
SonarQube是一種開源工具,用于代碼質量、持續檢查、安全和錯誤分析。它適用于Java、Python、XML和PHP以及許多開箱即用的語言。該工具可以通過XPath表達式動態添加規則,用戶還可以自定義該工具以強制執行某些應該忽略異常的情況。
SonarQube主要用于靜態分析。它與Git Lab有很好的集成。SonarQube的儀表板和高級跟蹤使用戶可以對代碼質量和檢查進行大量控制。
SonarQube具有以下一些缺點:
- JavaScript在SonarQub中的運行不是很順暢。
- 有時運行緩慢。
- 對第三方工具和插件的支持有限。
七、記錄和監控類別
20.Grafana
Grafana是一種基于Apache2.0許可證構建的開源分析和監控解決方案,以其出色的用戶界面(UI)、圖形、圖表、實時分析和觸發器而聞名。Grafana可以從多個來源提取數據,包括Graphite、InfluxDB、OpenTSDB和Prometheus。
Grafana主要用于監控Docker容器、網絡設備、帶寬、數據流、虛擬服務器、Azure基礎設施、數據庫和Web應用程序。Grifana還以其插件以及與Telegraf和Zabbix的無縫集成而聞名。
Grafana可以為用戶可視化粒度數據,包括中斷的確切時間、中斷前的事件、用戶日志、數據中心溫度和性能預測等指標。
21.NewRelic
NewRelic是一種全棧監控工具,用于跟蹤基于云計算的應用程序和軟件。NewRelic提供豐富的儀表板、分布式跟蹤支持、詳細日志、自上而下的可見性和監控。NewRelic對后端調用具有強大的監控能力,可以詳細說明系統速度變慢的原因。
該工具對于需要詳細分析多個堆棧配置文件的企業非常有用。
NewRelic價格昂貴,但其開發公司最近制定了基于消費的定價模型。
NewRelic具有以下一些缺點:
- 客戶支持薄弱。
- 即使在基于消費的定價模型之后也很昂貴。
- 調試復雜且困難。
22.Nagios
Nagios是一種開源軟件,可以監控系統、網絡和基礎設施。它主動監控服務的健康狀況并維護日志存儲文件。它還顯示停機原因、停機持續時間以及可能觸發停機的事件。
Nagios還提供了幾個配置選項和警報功能。用戶可以抑制主機的警報、在主機上強制實施維護模式、自定義警報的通知設置等等。
Nagios支持數百個插件。用戶還可以創建自己的自定義并開發自己的插件支持。
但是,由于Nagios相對較舊,因此很難使用最新的基礎設施進行操作。它缺乏數據庫驅動的配置并強制用戶使用配置文件。
八、ITSM和協作類別
23.JIRA
JIRA是全球軟件公司使用的一種項目管理和協作工具。 JIRA是一種非常強大的工具,提供各種自定義和功能。
為了充分利用JIRA的優勢和強大功能,用戶需要行業專家的幫助,因為如果用戶的需求很復雜,則該工具很難配置。可以使用JIRA的Portfolio功能創建時間表、發布計劃和預測。用戶可以使用JIRA的結構來跟蹤粒度級別的進度。
其他一些功能包括:
- Zephyr for JIRA是一個本地測試應用程序,可用于整個軟件測試生命周期。
- 關鍵路徑工具。
- 計算團隊速度的原生工具。
- 與BitBucket和Bamboo等Atlassian產品的集成。
JIRA具有以下一些缺點:
- 乏味且有時令人困惑的用戶界面 。
- Bucket/容器在JIRA中被稱為“項目”,這很容易混淆。
24.Slack
Slack是一種協作和通信工具,并且廣受歡迎。Slack以其實時對話、搜索功能和友好的用戶界面而聞名。
由于其強大的用戶界面、有趣的功能和敏捷性,Slack正在迅速取代軟件行業的電子郵件。 而由于十分流行,現在有幾個軟件協作工具為即時消息提供了Slack集成。
JIRA和Slack集成通常用于項目活動日志、虛擬Sprint回顧會議、票務解決方案和警報。還可以使用編程為Slack制作自定義聊天機器人、基礎設施例程和觸發器。
25.Microsoft Teams
Microsoft Teams是一種溝通和協作工具。它對在Windows生態系統中工作的用戶很有用。除了即時消息服務之外,Teams也很有用,因為它與AzureDevOps平臺集成。用戶還可以將Teams與Azure Repos和Azure Pipelines連接起來。
Teams提供不同的渠道,團隊可以在其中相互協作。這將創建一個特定于項目的通信存儲庫,用戶可以隨時搜索它。
Microsoft Teams其他一些功能包括:
- 文件存儲庫
- 電話/視頻會議
- 聊天機器人集成
- Office365集成
雖然產品選擇很好,但可用的眾多工具可能令人生畏。缺乏標準化和自動化可能會在入職和/或交接過程中產生極高的學習曲線。通常情況下,企業的各個團隊會投資于相似、重疊的工具,從而浪費了時間和費用。隨著構建和集成工具鏈讓開發人員筋疲力盡,工具版本的老化以及集成由于遺留代碼而陷入困境,安全問題將變得更加嚴重。
原文標題:Top 25 DevOps Tools for 2021,作者:Vishnu Vasudevan
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】