DevOps之运维篇

本文探讨了DevOps的起源、本质及其对企业IT流程的影响,强调了开发、测试和运维团队之间的协作与自动化的重要性。通过GeneDock的DevOps实践经验,阐述了如何推进自动化落地,以及运维团队如何更贴近业务,实现运维革命。同时,列举了一系列常用DevOps工具,并指出工具选择应注重适用性而非盲目堆砌。最后,分享了GeneDock的运维团队在DevOps道路上的探索和未来展望。
摘要由CSDN通过智能技术生成

DevOps像什么?

过去的两三年里,DevOps是在互联网行业乃至整个IT业,发展迅猛的一个“词语”。这里之所以只说它是个“词语”,是因为在各种书籍里,网络上,关于DevOps是什么的说法太多了,有的说DevOps是一种文化,运动,惯例;有的说是一个过程,方法和系统;后来又发展成为一个岗位,一种职业,前几天还看到了有机构在做DevOps的认证。所以我觉得很难给出一个一言以概之的解释,我们只说说DevOps“像”什么:


1. DevOps起源于敏捷方法论,或者我们说的精益原则,目的是为了产品发布更加快捷、频繁和可靠。


2. IT价值流在DevOps的带动下将快速贯穿开发至生产全过程,虽然字面上我们只看到一个“Dev”和一个“Ops”,感觉像是“一带一路”似的,其实包括了从开发到测试,再到发布生产各个环节,下图被经常用到解释DevOps和已有的研发部门角色之间的关系。(其实还应该包括企业的架构师)


“DevOps是在整个IT价值流中实施精益原则的结果。IT价值流将开发延伸至生产,将由程序员这个遥远的祖宗所繁衍的所有子孙给联合在一起。”
以上是Gene Kim对DevOps的解释,供大家参考。
DevOps Check List
这里简单粗暴的列出一些Check List,大家可以对号入座,但不要过分纠结:


1. 开发团队,测试团队和运维团队之间应该没有障碍。三者皆是DevOps统一流程的一部分。


2. 每个团队的输出都是经过自验证的,这样才能保证DevOps的闭环顺利运转。分享一个DevOps闭环图:


3. 开发、测试和发布环境标准化,可以很容易将之扩展并进行部署。


4. 每个团队之间的通信线路都很明确,保证沟通效率。


5. 所有的团队成员都有时间去为改善系统进行试验和实践。


6. 每次学习到的经验都应该文档化下来并分享给相关人员。事故处理成为日常工作的一部分,且处理方式是已知的。


运维的“革命”


运维可以说是DevOps这场“IT运动”中受到影响最大的角色,从传统运维到DevOps,就是一场“革命”。


Google的SRE(Site Reliability Engineer),从前一段时间开始,被人们热捧,有的公司马上把自己的运维岗位换名为SRE,确实显得B格高了一点点。甚至有人把SRE和DevOps划了等号,这样做真让人觉得槽点满满。我认为SRE其实是运维“革自己命”的产物,客观讲,这样的转型是很高明的,一定是经验积累,加思考,再加探索得出的。


SRE是Google的运维团队从实践中总结出来的一套方法论,将工程研发、日常运维和应急响应等任务较好的结合并落地,当Google的运维团队开始在做SRE的时候,DevOps的概念可能还不为人所知。


所以我们是否应该首先想到是,如何学习Google的运维团队走出适合自己的转型之路,我们的运维团队未来是什么?


运维的未来是什么?


—一切皆自动化


“运维的未来是,让研发人员能够借助工具、自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该努力使工作实现自动化。”——《运维的未来》


说到自动化,感觉又是槽点满满,也许有人和我一样都经历过为了自动化而自动化的尴尬,在大公司里,不乏专门做自动化工具的团队,每年出一套工具,“紧跟时代潮流”,然后被迫使用这些自动化工具的团队怨声载道;但是有经验的开发、测试或者运维工程师一定能体会到,“自动化”对于DevOps来说,是刚需。


—工具的合理选择


同样对于DevOps来说,工具是必要条件,但工具不是充要条件,如果沉迷于各种工具的堆砌,那么可能跑偏,下面是我们经常会提到的一些工具:


代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
构建工具:Ant、Gradle、maven
自动部署:Capistrano、CodeDeploy
持续集成(CI):Travis、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Ganglia、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
应用服务器:Tomcat、JBoss、IIS
Web服务器:Apache、Nginx
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker


面对茫茫“工具海”,传统运维团队在日渐式微,而构建工具的团队日益壮大起来,这些工具包括持续集成环境和持续交付等等。运维能力应该逐渐延伸到构建和维护基础设施服务、配置管理、日志管理、容器管理以及监控等多方面。我的建议是,不选别人认为对的,只选最适合自己的。


—熟悉业务


在实践中我们发现,熟悉业务是团队最难实现,颗粒度最难把握的一部分。


传统运维会有很详细的分工,包括团队之间和团队内部。有的团队之间会做隔离,举个小例子,“今天上线的内容,我需要你每一步都写的清清楚楚,我只负责执行,不问为什么,出了问题我不负责”,听上去是否耳熟?其实问题不在于要求上线申请写的多清楚,问题是对业务相关“我不负责”。在传统运维团队内部,一般有专门负责部署上线,跑脚本的同事;有DBA,数据库所有操作就是“我”来;有做监控的同事等等。当然各个公司情况或许有所不同,但如果你曾经试着说服运维团队去靠近业务层,你碰到的问题应该类似,那就是或多或少的抵触。


DevOps中的运维团队需要对业务负责,这点毫无疑问,我想大家都没有必要再“害羞”了。事要知其然,且知其所以然。当然循序渐进的过程是有必要的,所以在GeneDock我们选择了一条自己的运维之路。


GeneDock的运维之路


GeneDock的运维团队在2017年二季度开始践行DevOps,努力的方向有两个:一是推进自动化落地;二是在原有的“知其然”基础上,要求团队成员“知其所以然”。


自动化的切入点是持续集成和部署,一步一脚印的向DevOps方向前进。目前主要围绕GitHub和jenkins,构建了线上(公有云)和线下(私有云)混合模式的持续集成和部署框架。如下图所示。

业务层面,运维团队在开发团队的大力帮助下,从上线后故障排查,以及配置管理问题的复盘开始,不断在实际问题中总结,并形成文档。同时也通过优化部署流程帮助整个研发团队提高发布效率。团队间相互促进,形成良性循环。

GeneDock的DevOps才刚刚起步,运维团队正在一边完善自己的日常维护工作,一边不断的学习新的工具,新的技能。相信不久后的GeneDock运维团队会再上层楼!也欢迎大家拍砖,不吝赐教,一起成长,“践行”渐远。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值