歡迎光臨
每天分享高質量文章

2019年十大最佳DevOps工具

 

開發和運維的整合翻開了軟體開發的全新篇章。如果你還是DevOps的新手,或者正在尋求改進已有流程的方法,那麼第一道關卡就是調研哪些工具最適合你的團隊。
本文整理了工具串列,為大家選擇所需的工具提供詳實的參考資訊。讓我們一起看看從自動化build工具到應用程式效能監控平臺領域裡,十大最佳DevOps工具是哪些吧。
1. Gradle
https://gradle.org/
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讓快速交付成為可能,也讓配置更加靈活。
2. Git
https://git-scm.com/
Git是最流行的DevOps工具之一,在軟體界使用廣泛。它是一種分散式SCM(原始碼管理)工具,遠端團隊和開源貢獻者都很喜歡它。Git讓使用者可以跟蹤自己開發工作的進度。使用者可以儲存自己原始碼的不同版本,並且在需要的時候切回之前的版本。它也很適合做實驗,因為可以建立單獨的分支,在需要的時候僅僅merge新特性。
要將Git和DevOps工作流整合起來,還需要維護repository,團隊成員可以向其中push各自的工作。目前,兩大最佳線上的Git repo託管服務是GitHub和Bitbucket。GitHub更有名氣,但是Bitbucket給小團隊(不超過五個成員)提供免費不受限的私有repo。使用GitHub,使用者僅僅可以免費訪問公有的repo——當然這對於很多專案來說仍然是很好的解決方案。
GitHub和Bitbucket都有很好的整合。比如,使用者可以將它們和Slack整合,這樣團隊的每個人都能在有任意commit時收到通知。
3. Jenkins
https://jenkins.io/
Jenkins是很多軟體開發團隊在走向DevOps時會用的自動化工具。它是開源的CI/CD伺服器,幫助使用者自動化交付流水線的不同階段。Jenkins之所以流行的主要原因是其巨大的外掛生態系統。目前,它提供1000多個外掛,因此它可以和幾乎所有DevOps工具(從Docker到Puppet)整合。
使用Jenkins,使用者可以搭建並且根據實際需要自定義自己的CI/CD流水線。Jenkins檔案裡介紹瞭如下示例。這僅僅是一種可能的實現。看著很不錯,不是嗎?
使用Jenkins很容易,它在Windows,Mac OS X和Linux上開箱即用。很容易就可以使用Docker安裝它。使用者可以透過瀏覽器搭建並且配置Jenkins伺服器。如果你是第一次使用它,可以選擇安裝最常用的外掛。當然也可以建立自定義配置。
使用Jenkins,使用者可以儘快迭代並部署新程式碼。它還幫助使用者度量流水線裡每一步是否成功。我聽到有人抱怨Jenkins很“醜陋”且並不直觀的UI。但是,我仍舊可以很容易地找到需要的所有東西。
4. Bamboo
https://www.atlassian.com/software/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也更為直觀,有提示,自動補全和其他有用的特性。
5. Docker
https://www.docker.com/
Docker在2013年釋出之後已經成為了首屈一指的容器平臺,並且仍然在持續改進。它是最重要的DevOps工具之一。Docker在科技界掀起了容器化的潮流,主要是因為它讓分散式開發成為可能,並且自動化了應用程式的部署。它將應用程式隔離成單獨的容器,因此應用變得更加便攜也更為安全。Docker應用程式也獨立於OS以及平臺。使用者可以使用Docker容器代替虛擬機器,比如VirtualBox。
我最喜歡Docker的一點是使用者無需擔心依賴管理。可以將所有依賴打包進應用程式的容器,並將所有的東西當做獨立的單元交付。然後,使用者可以很輕鬆地在任意機器或者平臺上執行這個應用程式。
Docker也和Jenkins以及Bamboo整合。如果你將自動化伺服器和Docker搭配使用,可以進一步改進交付工作流。另外,Docker也很適用於雲端計算。最近幾年,所有主流的雲供應商,比如AWS,Google Cloud,都已經支援Docker。因此,如果你計劃雲遷移,那麼Docker可以幫助簡化這一行程。
6. Kubernetes
https://kubernetes.io/
今年,每個人都在談論Kubernetes。它是容器編排平臺,將容器化推進到下一個層面。它可以使用Docker或者其他替代產品。Kubernetes仍然很新;2015年才推出第一個版本。它由一些Google的工程師建立,他們想找到管理大規模容器的方案。使用Kubernetes,使用者可以將容器組織成邏輯單元。
如果你只有幾個容器,那麼可能並不需要容器編排平臺。但是,當系統達到一定級別的複雜度,需要擴充套件資源的時候,這就是合理的下一步。Kubernetes讓使用者可以自動化管理上百個容器的過程。
使用Kubernetes,無需將容器化的應用程式系結到某個單獨的機器裡。相反,你可以將它部署到一個機器集群裡,Kubernetes會自動化分發併在整個集群裡排程容器。
一個Kubernetes叢集包含一個master和幾個worker節點。master節點實現預定義的規則,並且將容器部署到worker節點上。Kubernetes負責所有一切。比如,它註意到某個worker節點下線了,就會將其上的容器重新分發到別的節點上。
7. Puppet企業版
https://puppet.com/products/puppet-enterprise
Puppet Enterprise是一個跨平臺的配置管理平臺。它讓使用者可以將基礎架構當做程式碼來管理。因為它自動化了基礎架構管理,使用者可以更快更安全地交付軟體。Puppet還給開發人員提供了小型專案可以使用的開源工具。但是,如果你負責的是較大的基礎架構,就會發現Puppet Enterprise的額外特性是有價值的,比如:
  • 實時報告

  • 基於角色的訪問控制

  • 節點管理

 

使用Puppet Enterprise,你可以管理多個團隊和數千資源。它能自動理解基礎架構裡的關係。它處理依賴關係並且智慧地處理故障。當遇到一次失敗的配置時,它也會跳過所有依賴的配置。Puppet最好的一點是它有5000多個模組,可以和很多流行的DevOps工具整合。
8. Ansible
https://www.ansible.com/
Ansible是一個配置管理工具,和Puppet,Chef類似。使用者可以用它配置自己的基礎架構並且自動化部署。和其他類似的DevOps工具相比,它的主要賣點是簡潔易用。Ansible遵循和Puppet一樣的基礎架構即程式碼(IAC)的理念。但是,它使用超級簡單的YAML語法。使用Ansible,使用者可以在YAML裡定義任務,而Puppet則有自己的宣告式語言。
無代理的架構是另一個經常被提及的Ansible的特性。因為後臺沒有執行daemon或者代理,Ansible是安全並且輕量級的配置管理自動化的解決方案。和Puppet類似,Ansible也有一些模組。
如果想要更好地理解Ansible在DevOps工作流裡是怎麼工作的,可以檢視Red Hat Blod裡的這篇博文。它介紹了在Jenkins流水線裡,如何使用Ansible來預配環境以及部署應用。
9. Nagios
https://www.nagios.org/
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團隊提供了基礎架構監控解決方案。但是,它需要一定的時間搭建,並且需要考慮和你的環境的相容性。
10. Raygun
https://raygun.com/
Raygun是領先的錯誤監控以及崩潰報告的平臺。應用程式效能監控(APM)是其最近的專案。Raygun的DevOps工具幫助使用者分析效能問題,並且定位到程式碼的某一行,某個function或者API呼叫。APM工具和Raygun的錯誤管理工作流可以協同工作。比如,它自動定位最高優先順序的問題,並建立issue。
Raygun APM能夠幫助最大化其他DevOps的價值,因為你總是能收到問題通知。因為它自動將錯誤連結到原始碼裡,Raygun給整個團隊提供統一的真理來源來定位錯誤和效能問題,將開發和運維緊密聯絡在一起。
哪些DevOps工具適合你的團隊?
找到最佳的DevOps工具需要一些測試和經驗。搭建以及配置開源軟體通常需要更多時間。大多數商業DevOps工具都有免費試用版本,使用者可以測試並且評估。最終選擇哪些工具取決於團隊的需求和標的。
原文連結:https://raygun.com/blog/best-devops-tools/

Kubernetes實戰培訓

Kubernetes實戰培訓將於2019年3月8日在深圳開課,3天時間帶你係統掌握Kubernetes,學習效果不好可以繼續學習本次培訓包括:雲原生介紹、微服務;Docker基礎、Docker工作原理、映象、網路、儲存、資料捲、安全;Kubernetes架構、核心元件、常用物件、網路、儲存、認證、服務發現、排程和服務質量保證、日誌、監控、告警、Helm、實踐案例等。
    閱讀原文

    贊(0)

    分享創造快樂