写点什么

企业如何落地 DevOps(下)

作者:老张
  • 2023-07-06
    上海
  • 本文字数:1945 字

    阅读完需:约 6 分钟

企业如何落地DevOps(下)

这是 devops 系列的第五篇文章。

前面几篇文章,分别从 devops 的定义和价值、落地路线图以及落地三要素进行了分析,也概括了企业落地 devops 过程中的八个关键动作。这篇文章,我会针对其中的几项工程实践,结合自己的实践经验来谈谈我的理解和一些注意事项。


版本和配置管理

上一篇文章提到了,版本和配置管理要追求的目标是信息一致可追溯,版本信息标准化。

常用的版本和配置管理相关的工具,比如 Ansible、Git、Apollo、CMDB 等,都是被大家所熟知和广泛应用的工具,也是工程实践的一部分。工具和技术的选型根据各自的具体情况选择合适的即可,但其中有几点注意事项:

  • 变更检查:原则上每次配置和版本的变更,无论是代码合并,还是配置信息的变更甚至只是简单修改一个字段,都需要进行检查,评估影响范围。

  • 权限管理:权限管理可以看做是变更检查的一个补充,很多时候由于权限分配的松散,导致了很多变更被忽视或者无意掩盖了,进而导致了很多有意思的线上故障。

当然,无论是变更检查还是权限管理,都应该成为软件研发交付流程中的规范,尽可能强制执行。人的行为是无法完全控制的,不能指望员工的个人专业能力和职业素养是完美无缺的,流程规范的目的是为了收敛可能的风险。


部署和环境管理

频繁的编译构建和部署,是软件研发和测试阶段最常见的动作。很多时候我们的精力放在了 code review、变更检查、冒烟测试和发现修复 bug 方面,但在和很多技术同学沟通后,我发现了一些被大家忽略的问题,那就是环境稳定性。

无论是编码、服务联调还是测试执行、发布前的验收,这些动作都是在具体的环境中开展。如果环境不稳定,就相当于在一个漏洞百出的小船上讨论如何遨游四海。

根据我的实践经验,在服务部署和环境管理方面,有以下几点需要引起重视:

  • 服务监控:大多数团队只关注生产环境的服务可用性,有完善的监控,测试环境的服务可用性反而不太重视,无形中花费了很多时间来排查环境引起的各种问题,降低了研发过程效率。

  • 可控发布:测试环境的发布往往比较随意,很多时候一轮测试还未完成,为了验证所谓的 bug 修复,就发布一次。对于像微服务这种复杂的系统架构,其实这样做很容易埋下风险。更好的方式是发布的可控,比如:设置发布时间窗口/指定发布权限/发布信息同步/DDL 变更的统一等。


持续交付流水线

持续集成和持续交付可以说是软件工程领域的一个重要实践,它提倡的是频繁的将团队成员提交的代码快速的进行编译构建,并且每次集成后自动进行自动化测试的验证工作,以期尽早更快的发现问题并快速修复。

但在实际的落地过程中,往往都会出现这几种典型案例:

  • 代码提交后并没有触发完整的流水线;

  • 流水线很多时候并没有触发自动化测试,而是通知后手动执行自动化测试;

  • 自动化测试之后发现了问题,往往需要很长时间去排查到底是哪里出现了问题;

为什么会出现这种情况,大量的单独的轮子是表象,背后的原因则是各自为战,没有将各个团队独立的轮子能力串联利用起来。比如运维开发了发布平台,测试高了一个自动化测试平台,基础架构的监控平台也是独立的。大家都在建设这种小范围的流水线能力,但在实践过程中,动作都是断开的。

在 devops 的落地实践中,我个人认为如下几点是衡量持续交付能力的几个重要特征:

  • 完整的动作:从提交、打包编译、配置变更、服务部署到测试执行、结果反馈,是否是连贯快速的。

  • 及时的响应:出了问题能否及时响应,是否有丰富的问题应对策略(案例沉淀、知识库)。


可视化持续度量

还记得前面文章提到过的 VSM 价值流图吗?它最重要的特点是提供全局视角、快速识别问题、促进团队合作、驱动质量度量以及体现技术价值。VSM 的几个关键要素如下:

  • 前置时间:需求从提出到上线的时间周期,体现了研发团队的交付速率,用来计算交付吞吐量。

  • 增值活动时间和不增值活动时间:减少无意义的会议、频繁的需求变更、不断 reopen 的 bug 等。

  • 完成度和准确度:有多少工作因为质量不符合要求而被打回,比如一句话需求、冒烟测试不通过。

在实际的研发测试活动中,很多时候我们的注意点在单元测试覆盖率、测试用例覆盖率、bug 数等更容易量化的指标上,这些纯技术指标对于工作量的评估是有一定的借鉴,但工作量真的等于创造了有意义的价值吗?不一定!

同样,很多公司推行站会、早会、周会例会,也有类似看板的可视化大盘,但这些东西最后大多变成了向上汇报的 PPT。可视化的目的是为了同步信息,降低信息差带来的无形成本,识别低效率环节并加以改善。持续度量是需要基于价值流来定义明确的有价值的目标,然后选择合适的指标和数值来评估研发过程,衡量交付结果

可视化和持续度量,二者本身需要关联在一起,才能真正实现 devops 最本质的目标:

  • 在保障交付质量的前提下提高软件研发交付效率;

  • 高效的交付支撑了业务目标更快达成,技术和业务互相促进闭环;

  • 业务目标达成更有利于企业员工自身跟着平台成长而获利和成长;

发布于: 刚刚阅读数: 4
用户头像

老张

关注

读书、思辨、审慎。 2019-12-02 加入

公众号:老张的求知思考世界 博客园:https://www.cnblogs.com/imyalost/ 专注于质量保障体系建设、DevOps实践、稳定性保障领域

评论

发布
暂无评论
企业如何落地DevOps(下)_DevOps_老张_InfoQ写作社区