1. 程式人生 > >DevOps開源工具的三種分類整理

DevOps開源工具的三種分類整理

數據 日誌 junit 理解 -o 三種 開發 with ref

原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml

隨著開發運維一體化的DevOps運動在國內外蓬勃發展,DevOps相關工具也呈現熱鬧趨勢,在這個言必談如何實施落地引入工具、建設平臺的大環境下,我們今天也來盤點一下DevOps相關工具。

先來看一下業界對DevOps工具的各種分類介紹。

一、DevOps應用交付工具鏈

ElasticBox是國外一個雲應用管理工具,主要用於實現雲應用生命周期的可視化管理,他們的口號是“Deploy any Application Anywhere – Zero stress,Total control”。

關於DevOps工具,他們整理了一個腦圖:

技術分享

主要從開發、部署、維護三個方面把常用的開源工具做了一個分類:

>>>>

1、開發

開發類的DevOps工具又分為:

(1) 版本控制和協作,例如Git、SVN等

(2) 構建和測試自動化,例如Ant、Selenium、Jmeter等

(3) 持續集成和交付,例如Jenkins、CruiseControl等

>>>>

2、部署

部署類的DevOps工具分為:

(1) 容器平臺,例如Docker等

(2) 配置管理,例如Chef、Puppet、Ansible等

(3) 微服務平臺,例如Cloud Foundry、Kubernetes等

(4) 服務開通,例如Puppet、Docker Swarm、Vagrant等

>>>>

3、維護

維護類的DevOps工具分為兩大類:

(1) 日誌,例如logstash等

(2) 監控告警和分析,例如Nagios、Zabbix、Kibana等

ElasticBox對開源的DevOps工具的分類來看,主要是圍繞著應用從構建到部署、交付運維這樣的工具鏈來分類的。

二、DevOps工具元素周期表

XebiaLabs是國外一家圍繞著企業規模化可靠軟件交付自動化做解決方案和工具的廠商,他們的口號是大規模、更快速地自動交付:“Get the visibility, automation, and control to deliver software faster and with less risk.”。

關於DevOps工具,他們以元素周期表的展現形式整理了一個圖:

技術分享

圖中按顏色標註不同類型的DevOps工具,包括:

(1)數據庫,例如:Oracle、MySQL、Cassandra等;

(2)持續集成,例如:Jenkins、TeamCity等;

(3)部署,例如:SSH、XLDeploy等;

(4)雲/IaaS、PaaS,例如:Amazon Web Services、Azure等;

(5)業務分析/監控,例如:Splunk、Nagios等;

(6)配置管理,例如:Git、SVN等;

(7)庫管理,例如:Nexus、NuGet等;

(8)配置/服務開通,例如:Chef、Puppet、Ansible、Vagrant等;

(9)發布管理,例如:XL Release、UrbanCode Release等;

(10)日誌,例如:Sumo Logic、Logstash等;

(11)構建,例如:Gradle、Ant、Maven等;

(12)測試,例如:Junit、Cucumber、Selenium、Jmeter、Appium等;

(13)容器化,例如:Docker、Kubernetes、Mesos等;

(14)協作,例如:Jira、Flowdock等;

(15)安全,例如:Snort、CyberArk等。

看起來XebiaLabs的分類更全面,既包括了開源工具也包含商業工具,當然也包括了XebiaLabs自己的工具;但是看起來又有點為了構成元素周期表而塞入一些工具的味道例如,個人認為數據庫這類基礎軟件就沒必要跟DevOps扯上了吧?!

另外,XebiaLabs的分類在某些地方與ElasticBox的分類有出入,例如,ElasticBox把Kubernetes放到部署類,而XebiaLabs把它放到單獨的容器化這個類別,當然,ElasticBox的部署類這個大的類別也是包含了容器化的。

由此可見,各家對DevOps的理解,還有工具的歸類方式等都會有差異,沒有統一的標準。

三、基於DevOps能力矩陣的工具分類

既然沒有統一的DevOps工具分類標準,那麽我個人也想從之前歸納總結的DevOps能力矩陣模型的角度,對DevOps相關的工具進行一些分類。

技術分享

Devops憑借其連接彌合開發與運營團隊的能力正在各個行業呈現席卷之勢。開發人員和運營人員歷來就是水火不容,無論是在開發、測試還是部署上都有著很大的分歧,只有Devops才能扭轉這一局面。

我們從DevOps的核心理念可以看出,DevOps強調開發、QA、運維的一體化融合。

技術分享

但是,本質上來看開發、QA、運維又是分屬不同的部門和組織(尤其是傳統企業),有著自己的過程管理方式,主要負責的事情不一樣,所謂“術業有分工”,因此用到的工具也有所不同。

那下邊我們就嘗試歸納一下開發、QA、運維各自常用的一些工具,並且嘗試從DevOps能力融合的角度分析,哪些工具是三者或兩兩之間可以共用的,並挑選一些典型工具做簡單介紹。

(一)開發類典型DevOps能力融合工具

敏捷開發已經成為主流,敏捷開發中的核心實踐“持續集成”也逐漸被很多企業推廣應用,Jenkins作為這個領域的開源工具老大哥的位置已經事實上被確立了。

Jenkins通常被用在配置管理和部署代碼上,同時它也能夠與Puppet、Chef和容器技術一起使用,還有自動化的測試,例如Selenium、Jmeter也能被很好地整合到Jenkins持續集成的管道中。

開發人員、QA、測試和運維人員都在用Jenkins就很好地說明了Jenkins在DevOps領域的大好前景。

技術分享

(二)QA類典型DevOps能力融合工具

無論開發還是測試,還是運維,對軟件系統的性能都是非常關註的,因此APM這類上接運營(用戶感知)與運維(性能監控),下接QA(性能管理)與開發(性能分析)的工具就理所當然地在近幾年開始火爆起來了!

下圖是國外的老牌APM廠商的New Relic,使用New Relic企業可以迅速從多個角度查看並解決應用中出現的錯誤:

技術分享

New Relic高級產品經理Stevan Arychuk說New Relic可以提升高質量軟件交付的速度並同時降低企業所面臨的風險。企業中各團隊的角色和職責有所不同,但是通過多角度的數據分析,各個團隊之間的溝通、協作、交流可以得到加強,最終達到共同合作的目的。

(三)運維類典型DevOps能力融合工具

1、Automic

美國員工福利管理公司TASC使用Automic來實現其軟件部署的自動化,應用Automic,號稱可以在下午三點部署而不被別人發現。

技術分享

自動部署是開發的持續集成、測試之後銜接運維上線的一道關鍵工序,應用Automic這類自動化工具能軟件系統的部署和交付過程更敏捷、穩定高效、高質量地完成。

2、DynaTrace Ruxit

傳統的運維工具大多聚焦在監控類,尤其是基礎設施的監控,例如主機、中間件、數據庫的監控,尤其是服務器資源層面的監控,對應用層、業務層面的監控偏少,這會導致針對具體問題的分析,開發、QA、運維之間的共同語言偏少。

Devops的核心就是各個部門之間的協作,除了這個協作的理念之外還需要一種方式來進行溝通。

DynaTraceRuxit的智能查看功能可以直觀地展示應用和其依賴之間的關系,這樣軟件開發流程中的不同角色之間可以使用Ruxit來進行溝通和自動化的分析。


技術分享

本文參考了以下文章和相關材料:

(1)60best open source tools to do DevOps

https://elasticbox.com/blog/devops-open-source-tools/

(2)PERIODICTABLE OF DEVOPS TOOLS

https://xebialabs.com/periodic-table-of-devops-tools/

(3)7New Tools Java Developers Should Know

http://blog.takipi.com/7-new-tools-java-developers-should-know/

(4)8more cool tools for devops success

http://www.infoworld.com/article/3031009/devops/8-more-cool-tools-for-devops-success.html

作者介紹 陳能技

  • 2016全球敏捷運維峰會特邀嘉賓。

  • 【DBA+社群】專家,新炬網絡首席APM架構師。

  • 14年開發測試與質量架構經驗,擅長DevOps及APM、Docker、持續集成、持續交付在企業中的落地實施。

  • 著有《軟件性能測試診斷分析與優化》、《軟件自動化測試成功之道》、《深入淺出性能測試與LoadRunner實戰》等書。

全球敏捷運維峰會【杭州站】

DevOps開源工具的三種分類整理