DevOps 是一长串扑朔迷离的高科技行业最新流行词语中被神秘色彩笼罩、充满争议且事实上很冷漠的一个词汇。
神秘因为很多 IT 从业者几乎不知道它到底是什么。近期的信息周刊调查发现,22%的受访者对 DevOps 这一概念非常熟悉,其中却仅有21%在他们组织内部采用 DevOps 。
当技术布道师散布“工程”这个词的时候争议随之而起,这意味着 DevOps 是不同于网络工程、系统设计和软件开发的专业学科。问题在于 DevOps 更多的是一种能被应用于许多不同领域的理念和流程而非禁止尝试的领域。事实上 DevOps 是一套技能而非实际的专业学科。改变背景就能发现明显的区别:想象你正在召唤一个 JavaScript 工程师或是一个网络结构工程师。精于二分法的云架构师 Mike Kavis 在他的专栏写道,“不,你不是 DevOps 工程师。”
问五个 IT 从业者 DevOps 这个词意味着什么,你会得到五个完全不同的答案。去任何在线求职板搜索 DevOps 去看它的工作描述,你会看到所需的技能和职责还有工作职位会有很大的差距。转到 LinkedIn 并搜索使用 DevOps 的人,你会看到成千上万的人自称为 DevOps 工程师。他们中的一些人甚至声称拥有十多年的 DevOps 经验。让我觉得可笑的地方在于没人能明确的给它下定义,很少有公司实际上在用它并用的很好,但我们却都是 DevOps 专家。58%的信息周刊受访者表明在明年的短期计划中不采用 DevOps 。其中的三分之一在其业务中没有 DevOps 承诺的需求。
DevOps 关于行为的改变
鉴于对 DevOps 的持续炒作往往侧重于灵活性、敏捷和质量的定性收益,以及厂商们把 DevOps 和它们近期产品和服务混为一谈的趋势,这就很容易理解 IT 专业人士是怎么被混淆的了。
但根据 DevOps 先锋, Stateless Network 的客户关系副总裁 John Wills 所说,DevOps 运动是关于改变行为而非一项新技术。他在 CAMS 的缩写里抓住了本质:文化、自动化、测量和分享。在这些中, Wills 说第一点也是最重要的一点。“ DevOps 是关于文化和行为的改变,仅仅基于 Chef 或其他工具是没有助益的,”他补充道“一旦你正确的理解了文化,这场战斗就已经赢了70%。” Kavis 赞同,这里是他的定义。
“ DevOps 是一种文化的转变或者说是一项鼓励良好的沟通和协助(即团队合作)以促进更快速地构建更高质量和更具可实现性软件的运动。”
DevOps 随着敏捷、精益和 Scrum 这类强调快速成型、频繁更新和最小化项目开支的软件开发方法论而出现。 DevOps 仅仅是 IT基础设施适用的应用原则,或是 Wills 所说的“用对待软件开发的方式来对待运维。” Michael Davis 在信息周刊中的报告中写道, DevOps 是“关于在发布之前如何配置环境并采用自动化的方式让事务正常运转的模型。”
最初, DevOps 概念的提出、采用和之后的推广都是源自大规模云服务中对大型的服务器集群和分布式应用的管理。然而, Wills 讲到了当他第一次开始听到有关 SDN 和 OpenFlow 时,立即看到的是什么软件正在试图控制网络以及服务器自动化已经在云领域非常普遍的顿悟。该网络能够并且应该被类似的重复进程管理。他认为采用 DevOps 实践意味着能更流程化的推出新型服务器 ,但至今他看到的还是被针对个别设备的粗糙脚本所管理的网络,而不是设备的整个网络或类目。 我们的目标应该是系统地描述一个理想化网络状态(这是 SDN 和虚拟化抽象的入口),让其具有重现性和可编程化(这是软件语言和工具重要的地方),并自动完成网络建设、配置、测试以及迁移到生产的过程。 Davis 写道,“在 DevOps 下,我们不必依赖于一个知道它以前怎样建立的工程师。相反,我们得到了真实记录了配置,实验室开发人员容易重复运行的工具,并且最重要的是得到了开发和 IT 运维人员的验证。”
理论已经很完备,但在网络里施行 DevOps 却比管理服务器和应用配置更具挑战,因为网络设备是固有互联的,因此不能在真空中被管理。当系统化描述和自动化配置网络的时候“要对临界状态有更多的认知”, Willis 补充道。但他从诸如 Aristsa 、 Cumulus 、 Pluribus 和 Cisco 等厂商的新硬件中看到巨大的潜力,尤其是从 Lnsieme 派生出的 Nexus 9000,它功能丰富的 API 支持多语言。经过正确的设计和配置,你能够采用叶棘网络从字面上取代叶,它将继承状态和配置。当可编程网络集成了 OpenStack , Willis 看到客户“从裸机到全栈云不是一天两天了。”
重学基础知识
听起来还不错,但你从哪儿开始?要记住, DevOps 不是购买软件工具,而是改变观念、流程和团队交互。基础设施工程师必须了解(或重温)优秀软件开发和交付的一般原则,并将其应用到网络。这些包括:
- 问题抽象化。
- 使用资源管理流程和软件。
- 自动化构建和部署过程。
- 使用这些来创建一个自动化测试环境。
- 测试之后,在生产中让新版本替代控制版本。
- 通晓多语言;学习像 Python 和 Ruby 这样的高级语言。
- 了解一个或多个像 Chef 、 Puppet 或最新的 Ansible 这类的模式化驱动的配置工具。
提高 IT 团队之间的沟通。本博客文章提供7个 Willis 已经看到的应用于方便的 DevOps 的技术。
这些想法都不是新鲜事。如 Davis 所写,很多 DevOps 的核心原则可以追溯到 Fred Brooks 的开创性软件开发名著,《人月神话》这本批评通过增加人员来加快软件项目进度,而不是通过小团队的大量沟通、版本控制和充足的试点测试来强调开发中的可重用组件。 SDN 和 DevOps 给网络团队提供了重温这些相同经验的动力。
本文由 OneAPM 渠道运营张宇编译自 Nick Lippis 的 DevOps: Thinking Like a Programmer Can Make You a Better Network Manager
OneAPM 是中国基础软件领域的新兴领军企业。致力于帮助企业用户提供全栈式的性能管理以及 IT 运维管理服务,通过一个探针就能够完成日志分析、安全防护、 APM 基础组件监控、集成报警以及大数据分析等功能。想阅读更多优秀文章,请访问 OneAPM 官方技术博客 OneAPM 官方技术博客
染头发
聚一聚……
染头发
教育局……
你好
嗯讲得一般……
星雾
Lambda表达式的条件限制很多,应用面不多,我不知道是否应该要花时间来掌握这个表达式,求解……
修道小仙
感谢分享,来龙去脉,深入浅出,非常清晰……
小布丁
写的棒棒哒……
小布丁
写的真可以……
wuxin
受教了……
爱码物联
博客使用……
yancy_01
很喜欢文字的描述,特别是理论性质的,相比于代码,理论知识更加有意思,谢谢分享……