2019年十佳DevOps工具,你用了幾個?

開發技術 2019-03-07

本文整理了工具列表,為大家選擇所需的工具提供詳實的參考信息。讓我們一起看看從自動化build工具到應用程序性能監控平臺領域里,十大最佳DevOps工具是哪些吧。

1、Gradle

DevOps工具集需要一種可靠的build工具。Apache Ant和Maven統治著自動化build工具市場很多年,但是Gradle在2009年現身,從那時起它就邁著穩定增長的步伐越來越流行。Gradle的功能很強大,允許用戶用Java,C++,Python或者其他語言編程。各種流行的IDE,比如Netbeans,Eclipse以及Intellij IDEA也都支持Gradle。如果這還無法說服你使用它,那么還有一點可能有所幫助,Google也選擇它作為Andriod Studio的正式build工具 。

Maven和Ant使用XML配置,Gradle則引入了一種基于Groovy的DSL來描述build。在2016年,Gradle團隊還發布了一種基于Kotlin的DSL,因此用戶現在也可以用Kotlin來編寫build的腳本。這意味著Gradle的學習需要一定的時間,如果你以前用過Groovy,Kotlin或其他JVM語言的話,那么會有助于Gradle的快速掌握。除此之外,Gradle使用Maven的repository格式,因此如果使用過Maven的話對Gradle的依賴管理也會比較熟悉。還可以將Ant build導入進Gradle。

Gradle最好的設計是增量build,因此可以節省大量的編譯時間。根據Gradle的性能報告,它比Maven快100倍。這樣的性能優勢一部分來源于這種增量設計,另外也得益于Gradle的build緩存和daemon。build緩存重用task的輸出,而Gradle的Daemon將build的信息儲存在內存里,可以在多個build間共享。

總的來說,Gradle讓快速交付成為可能,也讓配置更加靈活。

參考閱讀

Gradle:https://gradle.org/

正式build工具:https://developer.android.com/studio/build/

基于Kotlin的DSL:https://github.com/gradle/kotlin-dsl

將Ant build導入:https://docs.gradle.org/current/userguide/ant.html

增量build:https://blog.gradle.org/introducing-incremental-build-support

性能報告:https://gradle.org/gradle-vs-maven-performance/

build緩存:https://blog.gradle.org/introducing-gradle-build-cache

daemon:https://docs.gradle.org/current/userguide/gradle_daemon.html

2、Git

Git是最流行的DevOps工具之一,在軟件界使用廣泛。它是一種分布式SCM(源碼管理)工具,遠程團隊和開源貢獻者都很喜歡它。Git讓用戶可以跟蹤自己開發工作的進度。用戶可以保存自己源碼的不同版本,并且在需要的時候切回之前的版本。它也很適合做實驗,因為可以創建單獨的分支,在需要的時候僅僅merge新特性。

要將Git和DevOps工作流集成起來,還需要維護repository,團隊成員可以向其中push各自的工作。目前,兩大最佳在線的Git repo托管服務是GitHub和Bitbucket。GitHub更有名氣,但是Bitbucket給小團隊(不超過五個成員)提供免費不受限的私有repo。使用GitHub,用戶僅僅可以免費訪問公有的repo——當然這對于很多項目來說仍然是很好的解決方案。

GitHub和Bitbucket都有很好的集成。比如,用戶可以將它們和Slack集成,這樣團隊的每個人都能在有任意commit時收到通知。

內容更新注釋:GitHub現已有免費私有倉庫。由于本文是譯文,存在一定時差,特此注明。

參考閱讀

Git:https://git-scm.com/

GitHub:https://github.com/

Bitbucket:https://bitbucket.org/

3、Jenkins

Jenkins是很多軟件開發團隊在走向DevOps時會用的自動化工具。它是開源的CI/CD服務器,幫助用戶自動化交付流水線的不同階段。Jenkins之所以流行的主要原因是其巨大的插件生態系統。目前,它提供1000多個插件,因此它可以和幾乎所有DevOps工具(從Docker到Puppet)集成。

使用Jenkins,用戶可以搭建并且根據實際需要自定義自己的CI/CD流水線。Jenkins文檔里介紹了如下示例:

這僅僅是一種可能的實現。看著很不錯,不是嗎?

使用Jenkins很容易,它在Windows,Mac OS X和Linux上開箱即用。很容易就可以使用Docker安裝它。用戶可以通過瀏覽器搭建并且配置Jenkins服務器。如果你是第一次使用它,可以選擇安裝最常用的插件。當然也可以創建自定義配置。

使用Jenkins,用戶可以盡快迭代并部署新代碼。它還幫助用戶度量流水線里每一步是否成功。我聽到有人抱怨Jenkins很“丑陋”且并不直觀的UI。但是,我仍舊可以很容易地找到需要的所有東西。

參考閱讀

Jenkins:https://jenkins.io/

1000多個插件:https://plugins.jenkins.io/

Jenkins文檔:https://jenkins.io/doc/book/pipeline/

使用Jenkins很容易,https://jenkins.io/download/

使用Docker安裝它,https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+with+Docker

4、Bamboo

Bamboo是Atlassian的CI/CD服務器解決方案,很多特性和Jenkins類似。它們都是流行的DevOps工具,幫助用戶自動化發布流水線,從build到部署。但是,Jenkins是開源的,Bamboo是收費的。因此,這里永恒的問題是,有免費軟件時有必要選擇收費軟件嗎?這取決于你的經費和目標。

Bamboo有很多預構建的功能,而這些功能在Jenkins里得自己手動搭建。這也正是Bamboo的插件更少的原因(大概100個,Jenkins有1000+個)。實際上,你并不需要Bamboo的很多插件,因為它帶著很多開箱可用的功能。

Bamboo和其他Atlassian產品,比如Jira和Bitbucket無縫集成。用戶還可以訪問內建的Git和Mercurial分支工作流及測試環境。總之,Bamboo可以節省很多配置的時間。它的UI也更為直觀,有提示,自動補全和其他有用的特性。

參考閱讀

Bamboo:https://www.atlassian.com/software/bamboo

5、Docker

Docker在2013年發布之后已經成為了首屈一指的容器平臺,并且仍然在持續改進。它是最重要的DevOps工具之一。Docker在科技界掀起了容器化的潮流,主要是因為它讓分布式開發成為可能,并且自動化了應用程序的部署。它將應用程序隔離成單獨的容器,因此應用變得更加便攜也更為安全。Docker應用程序也獨立于OS以及平臺。用戶可以使用Docker容器代替虛擬機,比如VirtualBox。

我最喜歡Docker的一點是用戶無需擔心依賴管理。可以將所有依賴打包進應用程序的容器,并將所有的東西當做獨立的單元交付。然后,用戶可以很輕松地在任意機器或者平臺上運行這個應用程序。

Docker也和Jenkins以及Bamboo集成。如果你將自動化服務器和Docker搭配使用,可以進一步改進交付工作流。另外,Docker也很適用于云計算。最近幾年,所有主流的云供應商,比如AWS,Google Cloud,都已經支持Docker。因此,如果你計劃云遷移,那么Docker可以幫助簡化這一進程。

參考閱讀

Docker:https://www.docker.com/

Jenkins:https://jenkins.io/solutions/docker/

Bamboo:https://confluence.atlassian.com/bamboo/getting-started-with-docker-and-bamboo-687213473.html

6、Kubernetes

今年,每個人都在談論Kubernetes。它是容器編排平臺,將容器化推進到下一個層面。它可以使用Docker或者其他替代產品。Kubernetes仍然很新;2015年才推出第一個版本。它由一些Google的工程師創建,他們想找到管理大規模容器的方案。使用Kubernetes,用戶可以將容器組織成邏輯單元。

如果你只有幾個容器,那么可能并不需要容器編排平臺。但是,當系統達到一定級別的復雜度,需要擴展資源的時候,這就是合理的下一步。Kubernetes讓用戶可以自動化管理上百個容器的過程。

使用Kubernetes,無需將容器化的應用程序綁定到某個單獨的機器里。相反,你可以將它部署到一個機器集群里,Kubernetes會自動化分發并在整個集群里調度容器。

一個Kubernetes集群包含一個master和幾個worker節點。master節點實現預定義的規則,并且將容器部署到worker節點上。Kubernetes負責所有一切。比如,它注意到某個worker節點下線了,就會將其上的容器重新分發到別的節點上。

參考閱讀

Kubernetes:https://kubernetes.io/

7、Puppet企業版

Puppet Enterprise是一個跨平臺的配置管理平臺。它讓用戶可以將基礎架構當做代碼來管理。因為它自動化了基礎架構管理,用戶可以更快更安全地交付軟件。Puppet還給開發人員提供了小型項目可以使用的開源工具。但是,如果你負責的是較大的基礎架構,就會發現Puppet Enterprise的額外特性是有價值的,比如:

實時報告

基于角色的訪問控制

節點管理

使用Puppet Enterprise,你可以管理多個團隊和數千資源。它能自動理解基礎架構里的關系。它處理依賴關系并且智能地處理故障。當遇到一次失敗的配置時,它也會跳過所有依賴的配置。Puppet最好的一點是它有5000多個模塊,可以和很多流行的DevOps工具集成。

參考閱讀

Puppet Enterprise:https://puppet.com/products/puppet-enterprise

開源工具:https://puppet.com/download-open-source-puppet

額外特性:https://puppet.com/products/why-puppet/puppet-enterprise-and-open-source-puppet

5000多個模塊:https://forge.puppet.com/

很多流行的DevOps工具:https://puppet.com/products/managed-technology

8、Ansible

Ansible是一個配置管理工具,和Puppet,Chef類似。用戶可以用它配置自己的基礎架構并且自動化部署。和其他類似的DevOps工具相比,它的主要賣點是簡潔易用。Ansible遵循和Puppet一樣的基礎架構即代碼(IAC)的理念。但是,它使用超級簡單的YAML語法。使用Ansible,用戶可以在YAML里定義任務,而Puppet則有自己的聲明式語言。

無代理的架構是另一個經常被提及的Ansible的特性。因為后臺沒有運行daemon或者代理,Ansible是安全并且輕量級的配置管理自動化的解決方案。和Puppet類似,Ansible也有一些模塊。

如果想要更好地理解Ansible在DevOps工作流里是怎么工作的,可以查看Red Hat Blod里的這篇博文 。它介紹了在Jenkins流水線里,如何使用Ansible來預配環境以及部署應用。

參考閱讀

Ansible:https://www.ansible.com/

一些模塊:https://docs.ansible.com/ansible/latest/modules/modules_by_category.html

這篇博文:https://www.redhat.com/en/blog/integrating-ansible-jenkins-cicd-process

9、Nagios

Nagios是最流行的免費并開源的DevOps監控工具。它可以監控基礎架構從而幫助用戶發現并解決問題。使用Nagios,用戶可以記錄事件,運行中斷以及故障。用戶還可以通過Nagios的圖表和報告監控趨勢。這樣,可以預測運行中斷和錯誤,并且發現安全攻擊。

雖然基礎架構監控里有很多DevOps工具,但是Nagios因為其豐富的插件生態而脫穎而出。因為Nagios已經發布很多年了(2002年發布),圍繞它的社區很大。除了插件,社區還貢獻了add-on,指導文章,翻譯等等有用的東西——都是免費的。

Nagios提供了四中開源監控解決方案:

Nagios Core

Nagios XI

Nagios Log Server

Nagios Fusion

Nagios Core是一個命令行工具,提供了所有基本功能。用戶還可以選擇Nagios XI ,它提供了基于網頁的GUI以及監控向導程序。Nagios提供了功能的比對。

Nagios Log Server讓用戶可以搜索日志數據,并且配置可能攻擊的報警。Nagios Fusion可以同時監控多個網絡。

整體來說,Nagios給DevOps團隊提供了基礎架構監控解決方案。但是,它需要一定的時間搭建,并且需要考慮和你的環境的兼容性。

參考閱讀

Nagios:https://www.nagios.org/

插件生態:https://exchange.nagios.org/

功能的比對:https://www.nagios.org/downloads/nagios-core/

10、Raygun

Raygun是領先的錯誤監控以及崩潰報告的平臺。應用程序性能監控(APM)是其最近的項目。Raygun的DevOps工具幫助用戶分析性能問題,并且定位到代碼的某一行,某個function或者API調用。APM工具和Raygun的錯誤管理工作流可以協同工作。比如,它自動定位最高優先級的問題,并創建issue。

Raygun APM能夠幫助最大化其他DevOps的價值,因為你總是能收到問題通知。因為它自動將錯誤鏈接到源碼里,Raygun給整個團隊提供統一的真理來源來定位錯誤和性能問題,將開發和運維緊密聯系在一起。

參考閱讀

Raygun:https://raygun.com/

應用程序性能監控:https://raygun.com/platform/apm

哪些DevOps工具適合你的團隊?

找到最佳的DevOps工具需要一些測試和經驗。搭建以及配置開源軟件通常需要更多時間。大多數商業DevOps工具都有免費試用版本,用戶可以測試并且評估。最終選擇哪些工具取決于團隊的需求和目標。

譯者介紹

崔婧雯,現就職于IBM,高級軟件工程師,負責IBM WebSphere業務流程管理軟件的系統測試工作。曾就職于VMware從事桌面虛擬化產品的質量保證工作。對虛擬化,中間件技術,業務流程管理有濃厚的興趣。DockOne社區金牌翻譯。

開發和運維的集成翻開了軟件開發的全新篇章。如果你還是DevOps的新手,或者正在尋求改進已有流程的方法,那么第一道關卡就是調研哪些工具最適合你的團隊。


中國· 上海

谷谷二維碼
添加微信咨詢

CopyRight?2009-2019 上海谷谷網絡科技有限公司 All Rights Reserved.  

關于我們 | 聯系我們

捕鱼平台兑换 重庆快乐十分开奖助手 12选5任三诀窍 时时彩缩水工具下载 福内蒙古时时结果查询 平特一肖稳赚哪个网站比较好 山东时时开奖结果走势图 江苏时时 3374最快开奖直播現场直播 新疆时时开奖上银狐网 时时彩开奖结果