12 月 7 日和 8 日,在北京世纪金源大饭店将举行《 O’Reilly Velocity China 2010 ── Web 性能和运维大会》,这不禁让人联想起最近在业内流行的一个热词,即“DevOps”。从名字上不难想到是由“Development”和“Operations”两个英文单词合并而成。那么究竟什么是“DevOps”呢?业内人士对它的看法又是怎样的呢?
Wikipedia 上对它的定义是:
DevOps 是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。 它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。 … DevOps 并不仅仅关注软件部署,它是部门间沟通协作的一组流程和方法。
这个定义似乎并没什么特别新鲜的内容,您可能会说:“我们的日常工作中不是一直需要各部门间的紧密协作吗?”然而,就象很多敏捷实践(比如迭代开发、每日构建)一样,它们在“敏捷”一词出现之前就已被应用到工作中,但敏捷让这些实践有机地结合在一起,发挥出前所未有的作用。敏捷强调打破需求、开发和测试之间的隔阂,形成自组织的跨功能交付团队,而 DevOps 则又向前迈进一步,强调以业务目标为导向,推倒交付团队与运维团队之间那道墙,将敏捷开发理念延伸至运维领域,使我们在 IT 方面的投入可以快速地转化为业务价值,从而打通“需求提出”到“上线运行”之间的所有环节。正如 Puppet Lib 的运维总监 Kartar 所说:
DevOps 就是试图避免重大失误,并更聪明且高效地工作。它是一种旨在促进开发和运维两个团队相互合作、学习的思想、原则和框架。在一个 DevOps 环境中,开发人员和系统管理员建立关系、流程和工具,让他们可以更好的交互,并最终为客户提供更好的服务。
作为 DevOps 的倡导者,独立 IT 咨询师 Patrick Debois 认为,DevOps 对下述问题的解决有很大帮助:
- 对变更的恐惧。一旦软件应用正式上线以后,业务方面往往害怕变更。他们认为软件本身和它所依赖的软硬件平台都很脆弱。所以对于任何变更都可能需要一个冗长的流程来保证。
- 部署充满了风险。因为没有人对软件质量有信心,比如不能肯定它是否能够处理生产环境中那么多的负载。
- “它在我的机器上没有问题!”常常听说开发人员这么说,而运维团队的确遇到了麻烦。
- 部门壁垒。开发人员和运维人员认识世界的方法,以及各自所处的角色,存在根本性的差别。他们都认为自己的做法是正确的。开发和运维团队通常处于公司组织架构的不同部分,通常具有不同管理者的和竞争关系,而且通常工作在不同的地点。
敏捷开发现已渐成主流。而随着虚拟技术和云计算的成熟与发展,对原有的运维模式与要求也发生了变化。 Joyent 的系统部总监 Ben Rockwood 认为:
“Devops 是下一代的 ITIL,即大众 ITIL。Devops 说:‘运维要为业务服务,而不能在角落里做极客’或者‘运维需要度量所有方面,比如发布流程、变更管理和版本控制等’。而更多的人认为,ITIL 再次火了起来,不只是 ITILv3,还有 CobiT, CMMI, ISO20K, ISO27K 等。”
Thoughtworks 敏捷发布管理工具GO 的产品经理 Jez Humber 在其博文《持续交付与ITIL:变更管理》中指出,ITIL 完全可以通过“持续交付”来实现一个轻量级的ITIL。 Tripwire 公司创始人 Gene Kim 写的《 Visable Ops 》中也阐述了如何用现实且合理的方式实现 ITIL。
另外,目前也有工具链对 DevOps 提供了强有力的支持,它覆盖了监控、准备、配置管理以及控制等方面,逐渐形成该领域中流程及工具标准化的生力军。作为 DevOps 运动的实践者,ThoughWorks 的 IT 主管 Ajey Gore 介绍说:
“在 ThoughtWorks 内部,我们已经在全球 22 个办公室的 500 多台服务器和虚拟机上安装了 Puppet。在公司内部,我们现在 - 建立了 Puppet 的版本控制库。
- 每个 Puppet 服务器每 30 分钟会检查一次版本控制库。如果发现有变更,就会进行本地更新,并重新启动服务器。
- Puppet 服务器也检查 puppet 脚本,反过来重新启动版本控制库。
- 如果有 Puppet 服务器出了问题, Nagios 就会告诉我们那台服务器上的 Puppet 没有运行,我们就可以修复它了。
综上所述,在思想上,DevOps 是敏捷理念向运维领域的延伸;在流程上,它是“需求”到“上线”全线贯通的关键;在工具及技术准备上,虚拟技术、云计算以及各类工具的日趋成熟,为这场变革奠定坚实的基础。
尽管大家对 DevOps 的看法不尽相同。但只要您把它看作是一种文化的演进,让交付团队与运维团队互相学习,互相帮助,成为真正的跨功能一体化团队,为客户提供更好的服务,最终也就达到了它的目标。
感谢张凯峰对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。
评论