近年来 DevOps 对软件工程的影响越来越深入并被广泛认可,与此同时,行业也在密切关注 DevOps 的发展趋势。
简单来说,DevOps 的主要目的是打破开发和运维团队之间的隔阂,促进两者的协作关系,让软件的交付和维护变得高效和流畅。
腾讯互动娱乐事业群技术运营部助理总经理、专家工程师党受辉表示,如今 DevOps 在概念上已经成为共识,算是研发运维领域的主流概念之一,当前处于各公司尝试落地的阶段,也有少数企业已经完成了 DevOps 理念的落地,向着下一个阶段,即“研发运营一体化”的阶段发展。党受辉也将 在QCon 全球软件开发大会(深圳站)担任“玩转 DevOps“专题的出品人。
IDC 预测,DevOps 软件市场预计将从 2017 年的 29 亿美元增长到 2022 年的 66 亿美元。可以看到,数字化趋势下,企业组织向 DevOps 转型的案例将越来越多,市场空间巨大,但 DevOps 的实践和落地需要视具体情况具体对待,否则也会“适得其反”。
如何更好地认识 DevOps,是一个说不完的话题,唯一能确定的是,不要指望 DevOps 能一步到位。
以下是 InfoQ 与党受辉的对话纪要:
InfoQ:能否说说在您看来现在 DevOps 文化理念的流行程度如何,它发展到了一个什么样的阶段?
党受辉:自 2001 年敏捷宣言以来,DevOps 文化经历了概念出现、社区争论、产业关注等阶段,近些年在中大企业、行业会议甚至是个人从业者等诸多群体的推动下,如今在概念上已经成为共识,算是研发运维领域的主流概念之一。当前处于各公司尝试落地的阶段,当然也有少数企业已经完成了 DevOps 理念的落地,向着下一个阶段,也就是“研发运营一体化”阶段发展。
InfoQ:自动化工具在 DevOps 实践中的位置,是否会随着引入 DevOps 的时间维度而变化?能否简单举例说明您的观点?
党受辉:自动化工具是 DevOps 实践的前提条件,不会随着时间维度而变化。自动化工具的作用是替代工程师“编写代码”之外的工作,业务开发人员应该只关注编写业务代码、测试人员只关注编写测试代码、运维人员只关注编写脚本代码。代码之外的工作有很多,例如编译构建、代码静态扫描、测试环境更新、生产环境发布等等。这些都是单次工作量不大但数量繁多的工作,但却打破了工程师的工作连续性,甚至带来繁重的沟通成本,而且在没有自动化工具链的情况下难以实现研发运维过程“度量”,也就没有“改进”的依据。因此自动化工具是 DevOps 实践的前提条件。
InfoQ:您认为企业组织向 DevOps 转型的成败关键是什么?实践过程需要注重什么?
党受辉:DevOps 转型成败关键有以下几点:1)选择适合 DevOps 模式的敏态业务,不是所有的项目都适合推行 DevOps;2)实践 DevOps 之初,应该先进行文化的导入,最好能让 Devops 相关岗位达成初步共识,至少不抵制,认同未来 DevOps 可期待的效果;3)高层的支持也非常重要,但是 DevOps 也足以产生成果让高层来重视和支持。实践过程需要注意:1)要以迭代、演进的思想来面对 DevOps 的落地实践,不要想着一步到位;2)选择建设或整合适合自己的 DevOps 自动化工具链;3)基于工具链沉淀研发运维过程数据,为下一阶段的度量和过程改进做储备;
InfoQ:每个公司的基础设施和解决的问题都有其特殊性,对提供 DevOps 解决方案的公司来说,您认为其当前所面临的机遇和挑战主要有哪些?
党受辉:机遇主要是随 DevOps 的行业认知所带来的市场容量增长,挑战则很多:1)DevOps 解决方案面向甲方企业的研发运维等技术团队,他们熟悉公司个性化的业务体系和基础设施,作为乙方公司要评估是否有足够的技术能力为某个甲方服务,甲方 DevOps 相关各团队是否有意愿做出改变,不是所有的甲方都是好客户。2)DevOps 涉及甲方部门多,现有的各种研发运维流程和各团队相互割裂的研发运维类烟囱系统面临迁移或改造,甚至部分留用,使得不同甲方在实施 DevOps 的时候方案不尽相同,对乙方自动化平台的通用性和扩展性有一定的挑战。3)部分甲方还存在研发和运维间的现实割裂,从物理网络、管理模式上有法规、权利分工等难以逾越的屏障,对乙方解决方案与第三方解决方案的兼容性有一定的挑战。
InfoQ:强调速度和效率的 DevOps 在与安全的结合上,存在哪些冲突?如何正确看待 DevOps 与安全的关系和融合?
党受辉:DevOps 和安全没有冲突,DevSecOps 也是一个流行词,因为 DevOps 解决方案应该基于自动化工具链实现,基于这个前提,安全应该是工具链上不可少的环节,好的工具链应该可以兼容各种第三方安全类的组件或产品,使得代码缺陷、版本漏洞等安全类隐患在 DevOps 工具链运行过程中被自动扫描甚至纠正,并且尽量左移以减少研发测试运维等各类工程师的无效人肉投入,因此质量、效率、成本和安全等诉求在 DevOps 理念中完全可以兼顾。
InfoQ:在企业云原生转型浪潮中,您如何看待 DevOps 在这其中的作用?
党受辉:云原生概念由三驾马车驱动:DevOps、微服务、容器化。微服务给业务架构解耦,容器为其提供一致性的细粒度版本和运行时环境,而 DevOps 理念则跨越代码的全生命周期,串接了包括微服务开发和容器编排在内的所有研运核心节点,如果没有 DevOps 的整合,另外两个概念对于研发工程师来说只是研发架构发生了改变,对运维工程师来说只是部署方式发生了改变而已,无法实现全链路的质量效率优化,难以进行持续的过程改进,也不容易促进不同岗位人员之间的协同。DevOps 在应用交付到云原生基础架构之前,提供了方法论、工具链平台来支撑软件研发和测试的全过程;在部署交付的时候,又作为管道交付软件到底层容器平台,没有 DevOps,云原生难以被广泛应用。
InfoQ:人工智能、机器学习等前沿技术将如何改变 DevOps?
党受辉:未来人工智能、机器学习的发展,可以在 DevOps 全链路有很多的应用场景:
- 更智能的 CodeReview,甚至指导开发修复问题代码;
- 自动识别迭代规划不合理、质量问题风险预警,甚至给出更智能的建议;
- 自动生成更准确的测试用例,发现测试风险;
- 自动发现从需求提出到生产发布过程中存在瓶颈,给出精益改进建议;
- AIOps 分析监控应用部署及运行,进行根因分析和智能修复。
- 代码自动生成……
总之,人工智能、机器学习未来可以让 DevOps 可以做到更加智能、使用的门槛会更低。
InfoQ:对未来 DevOps 的发展,您有哪些期望?
党受辉:国内的 DevOps 生态国产化率太低,Jira、Jenkins、Sonar、Nexus 等各种核心节点都依赖外国技术;国际形势的变化使得“软件国产化”的呼声和必要性提高,从去年开始我们做了一些努力,将腾讯集团内统一的腾讯 CI(蓝盾)、代码扫描平台(CodeCC)等自研 DevOps 工具组件开源出来,github 代号“bk-ci”。在与国际 DevOps 理念接轨的同时也留有落地方案的备胎,甚至未来正面竞争的可能,因此我也期望国内能有越来越多的厂商、用户一起加入进来,共建开源共享生态,兼顾自主可控。
InfoQ:您认为一个合格的"DevOps 工程师"需要具备哪些特质和技能?他与普通软件工程师的区别在哪?
党受辉:普通软件工程师的核心任务在于业务软件的开发。一个合格的 DevOps 工程师,其核心任务在于设计、构建、测试和部署、维护可伸缩的 DevOps 平台,以支撑企业的研发、测试、运维团队进行协作,并实现实现从构建、测试、部署的自动化。DevOps 工程师知识面要求更加广泛,对各个敏捷、开发、编译、测试、容器等等都要懂一些,因为他们需要支持各个团队将其开展的业务迁移到 DevOps 上。DevOps 的工程师也更加稀缺一些。