导言

上一篇文章给大家梳理了DevOps持续交付体系出现的时代背景,以及其定义和解读,也引出了对IT价值流的理解。我们应该都可以感知到,对于新的体系在企业中的实际推广最难的不是体系本身,而是大家思想的抗拒与行动的惰怠;所以在引入推行过程中首先做的是对大家的“思想”松松土。 image.png   而今天这篇文章主要是来讲解如何结合IT价值流实施DevOps。   实施过程中,我本来对如何实施DevOps也梳理了很详细的指导文档并组织了培训,但是发现只有很少部分对新生事物感兴趣的同事会认真阅读和学习,大部分人还是本能的抗拒和观望,直到亲自带领一个小团体实施了下来,让“大多数”实际看到了对企业、对自身均带来的效果和收益,这才有了后续团队级、公司级、集团级的扩散式推广和实施。 毕竟对于一个新事物先解释它的功能并教人们如何使用它,过程中先解释其是如何工作的更容易让人接受。就像“学习开车,你不想知道引擎盖下是什么,你首先想要学习怎样从 A 点开到 B 点 。只有在你学会了如何做到这一点后,你才会对汽车如何使这成为可能产生兴趣。 但知道引擎盖下面是什么,可能在有一天它抛锚后你被困在路边时, 会帮助你让车再次移动。”  

如果对理论和指导手册有兴趣学习的朋友可以先阅读本人GitHub上有关于此的指导手册, https://github.com/yaocoder/Architect-CTO-growth 包含以下内容

image.png

以 IT 价值流为路径实施 DevOps

image.png   产研团队在企业生存发展的基础是产生价值。如上图所示,IT产研团队主要参与的价值流分为产品准备期、产品交付期、产品运营期三大阶段。我们需要围绕IT价值流来进行DevOps的实践

一、解决价值产出流程问题。

产品准备期

  1. 业务目标阐述与理解:通过产品人员了解此次产品迭代的商业价值/用户价值,以及相关的业务上下文。
  2. 业务领域角色与流程识别,及解决方案的探索:共同讨论并识别该业务问题所涉及的主要业务流程与流程中的业务角色,并找到尽可能多的解决方案。
  3. 重大风险识别与验证:识别方案中的业务与技术风险,并且组织人员对那些影响决策的重大风险进行快速验证。
  4. 精炼并达成最小可行方案共识:从多种解决方案中挑选并确定最小可行解决方案。
  5. 评估与计划 :对最小可行解决方案进行交付标准、初步的工作量与时间评估,制订相应的交付计划。

产品交付期

在此阶段要完成产品的开发、测试、验收、发布,在过程中进行持续集成、自动化测试、持续部署等软件工程实践,构建“部署流水线”。

产品运营期

解决生产环境的指标监测体系,应用上线后的业务监测体系,建立问题处理体系及数据治理及应用用体系。

二、解决人性“懒”的问题

人是“懒”的,你我他都是,如果我们推行的新事物不但没有便利于大家,反而加重了大家的工作负担,失败只是早晚的事情。我们要最大程度的顺应人性。利用工具平台实现部署流水线、运维自动化等,做到工作流程的自动化管理。

二、解决管理问题

  • 利用流程和工具做到标准化管理 ;
  • 利用 kanban 做到关键产研流程的可视化管理;
  • 利用工具平台采集到的流程点及各级组织指标数据来进行产研流程及组织能力可衡量的数字化管理。

最终打造快速且高质量交付用户价值或商业价值的产研文化。

利用工具平台实施 DevOps

(1)基于《禅道》系统的产研协作管理

image.png 禅道的核心功能呈现的是一种软件工程思想,最终是为了管理优化研发过程,保证团队/每个人的工作能够按时保质完成。可以看到包含了产品准备期、产品交付期很多关键的流程点管理。

如:看板实现

image.png

……

(2)基于《KubeSphere》系统的部署流水线管理

自动检出 (Checkout) 代码、测试、分析、构建、部署并发布

image.png

一个工程的自动化部署流水线实例

kubesphere部署流水线.gif

(3)基于《SonarQube》系统的代码质量管理

多语言支持

Java、Kotlin、Objective-C、JavaScript、CSS、C/C++、Go……

七个维度检测代码质量

复杂度分布(complexity)、重复代码(duplications)、单元测试统计(unit tests)、代码规则检查(coding rules)、注释率(comments)、潜在的Bug(potential bugs)、结构与设计(architecture & design)。 image.png

(4)基于《meterSphere》的持续测试平台

MeterSphere是一站式的开源持续测试平台,涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付。 image.png

(5)基于《Harbor》的容器镜像制品库

image.png

(6)基于《Prometheus》和《Grafana》系统的生产环境基础设施监控

image.png

(7)其他便不一一详细列举了,给大家一张简表

类别 系统
知识库服务 confluence
源代码服务 Gitlab
SQL审核查询平台 Archery
CI/CD Jenkins
服务器资产管理 jumpServer
告警服务 夜莺
应用监测 skywalking
日志服务 ELK,EFK
…… ……

(8)另外,在运营期的数据治理及应用用体系我们自建了大数据平台及数据中台应用,期望有机会和大家分享。

结语

因为我们每次迭代都会针对实施DevOps过程中出现的问题进行总结和复盘。目前,此实践已经在团队级、子公司级得到了很好的认可和实施,正在向全集团推广中,希望有更多的业界朋友也能尝试拥抱DevOps,享受到它的实施成果。

附:

希望大家关注我最新维护的 GitHub 开源项目, https://github.com/yaocoder/Architect-CTO-growth 包括技术实践及手册撰写:涵盖DevOps,云原生技术,大数据,人工智能,高并发&高性能&高可用服务等,一起学习成长!如果对你有用,也请星标一下O(∩_∩)O