原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml html
隨着開發運維一體化的DevOps運動在國內外蓬勃發展,DevOps相關工具也呈現熱鬧趨勢,在這個言必談如何實施落地引入工具、建設平臺的大環境下,咱們今天也來盤點一下DevOps相關工具。java
先來看一下業界對DevOps工具的各類分類介紹。ios
1、DevOps應用交付工具鏈數據庫
ElasticBox是國外一個雲應用管理工具,主要用於實現雲應用生命週期的可視化管理,他們的口號是「Deploy any Application Anywhere – Zero stress,Total control」。安全
關於DevOps工具,他們整理了一個腦圖:服務器
主要從開發、部署、維護三個方面把經常使用的開源工具作了一個分類:網絡
>>>>架構
一、開發less
開發類的DevOps工具又分爲:運維
(1) 版本控制和協做,例如Git、SVN等
(2) 構建和測試自動化,例如Ant、Selenium、Jmeter等
(3) 持續集成和交付,例如Jenkins、CruiseControl等
>>>>
二、部署
部署類的DevOps工具分爲:
(1) 容器平臺,例如Docker等
(2) 配置管理,例如Chef、Puppet、Ansible等
(3) 微服務平臺,例如Cloud Foundry、Kubernetes等
(4) 服務開通,例如Puppet、Docker Swarm、Vagrant等
>>>>
三、維護
維護類的DevOps工具分爲兩大類:
(1) 日誌,例如logstash等
(2) 監控告警和分析,例如Nagios、Zabbix、Kibana等
從ElasticBox對開源的DevOps工具的分類來看,主要是圍繞着應用從構建到部署、交付運維這樣的工具鏈來分類的。
2、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的理解,還有工具的歸類方式等都會有差別,沒有統一的標準。
3、基於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實戰》等書。
全球敏捷運維峯會【杭州站】