原文地址: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实战》等书。
全球敏捷运维峰会【杭州站】