本文转自:http://www.javashuo.com/article/p-eyzpavfk-dc.htmlpython
什么是DevOps
DevOps是Development和Operations的组合,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协做与整合。它的出现是因为软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工做必须紧密合做。ios
能够把DevOps看做开发(软件工程)、技术运营和质量保障(QA)三者的交集。git
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工做方式,开发和部署不须要IT支持或者QA深刻的、跨部门的支持,而却须要极其紧密的多部门协做。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协做问题的流程和方法。github
DevOps工具
工欲善其事,必先利其器,如今你们在DevOps领域最关注的仍是在工具层面。数据库
下面是我跟这么多公司接触下来,你们使用比较多的工具:后端
一、监控工具ruby
比较老牌的就是Zabbix,Nagios,用Zabbix的感受是最多的。国内的有小米开源的OpenFalcon。这类监控工具通常是对服务器、服务(中间件,数据库)作一些经常使用指标的监控。服务器
二、性能分析/APM工具架构
APM不少时候被认为是监控的一个细分领域。但在现代复杂分布式系统架构下,APM工具每每更能准确、直接的帮助用户定位到性能瓶颈,好比哪个URL访问慢、哪个方法执行慢、哪个SQL执行慢。在以往要想拿到这些数据,每每得须要比较资深的架构师、DBA一块儿合做才能拿到这些数据,而定位瓶颈的效率每每还不过高。如今经过APM工具能让普通技能的运维人员,也很高效的定位到这些深层的问题。如今商用的APM工具很多,国外的有Newrelic,国内知名的就有听云、Oneapm、透视宝这些。开源的也有Pinpoint(naver开源)、Zipkin(twitter开源)、CAT(大众点评开源).框架
三、批量+自动化运维工具
这里就比较多了,知名的有Puppet、Ansible、Chef、Saltstack这些。这些在网上的资料也比较多,找比较新版本的官方文档看就好了。Puppet和chef是比较早期的工具,受众面也很大,不过这两个工具基于ruby实现,如今要找到熟悉ruby的人来作这块的二次开发可不容易。而ansible和saltstack则相对新生代一些,目前用户基数增加很快,基于python实现,要找作二次开发的人也相对容易的多。
四、集中日志分析工具
在一个服务器比较多的环境下,如何集中的管理和分析、查询日志,已经变成一个比较强的需求了。想象一下,若是发生了某个错误,你还得一台台机器去翻日志文件,是否是很蛋疼。在这个需求驱动下,就诞生了一些集中日志分析工具。在开源领域,比较知名的就是ELK这一套工具了,涵盖了日志采集、上报、搜索、展示这一类基本需求,如今比较多的上规模的企业都用这个,网上资料也大把。核心实现机制都是经过一些日志采集代理(相似Filebeat)去爬日志文件,将最新的部分提交到采集服务端,后端再对接搜索引擎,能支持很快速、准确的搜索便可。有一个国内不怎么知名的Sentry日志收集服务,比较轻量级,自己是Python作的,与各类语言的日志框架作了很是好的集成,能够很方便的集中收集异常日志,并分配给对应的开发人员。它在github上有10000多个star了,这在DevOps相关的软件里,都是排名很是靠前的了。git的地址:GitHub - getsentry/sentry: Sentry is cross-platform crash reporting built with love
五、持续集成/发布工具
我接触的人都是用Jenkins的,没有用其余的,可能跟我所在的技术圈子有关。集成打包的过程其实通常都比较简单,配好版本库和打包脚本就行。但发布的过程就比较复杂,有些是全量发布,但也有很是多的IT团队采用增量发布。这个方面若是想用工具,仍是得先分析清楚现有的发布流程,手工状况下怎么作,哪些能经过自动化工具来完成。
六、IaaS集成
最近两年的公有云推广比较迅速,不少新的服务器采购都被导入到云上去了。如今主流的公有云都提供了比较完备的API,基于这些API也能够作一些针对基础资源的自动化操做,好比游戏行业的快速开服。
更多的能够看下知乎上的一篇关于DevOps的文章:<<你所在的公司是如何实施DevOps的?>>
https://www.zhihu.com/question/24413538/answer/116474416