DevOps工具平台的 “诗和远方” 姓名:韩洪雷 GOPS全球运维大会暨研运数智化技术峰会2024·上海站 个人简介 韩洪雷 高效运维社区 曾主导并参与过多个效能平台的建设,如项目管理平台、度量平台、流水线平台等,对持续集成,持续交付,研发效能度量,BizDevOps等研发效能提升方面有一定的落地实战经验,现从事DevOps咨询工作,曾服务过多家大型金融机构。 DevOps工具平台的发展 工具平台的场景化服务能力 目录 平台工程的定义 平台的发展 DevOps工具 ①解决个人问题 ②解决项目问题 ③解决团队问题 ④解决组织问题 满足既有诉求 单点工具,开源工具,脚本,被动 满足新的诉求 管理诉求(少量),开源工具链,被动 满足个性诉求 专职团队,多技术栈,工程特性,流程规范,主动(次),被动(主) 满足管理诉求 规模的专职团队, 强调流程规范,封装,易用性,管理要求,主动 DevOps工具平台的发展 管理诉求管理要求 我来满足你的诉求>>>>>>>>>>>>>>>>你来满足我的要求被动>>>>>>>>>>>>>>>>主动 DevOps工具平台发展到一定阶段出现的绩效导向 量化指标 绩效导向:推广率&功能数 DevOps工具平台团队经常会出现的一些绩效导向: •推广率提升X% •上线X个功能 上线X个功能 覆盖多少业务条线 强迫 体验 解决X个Bug 接入多少个项目 妥协 管理 可能会出现的一些问题 流程规范建设层面 缺少流程规范对工具的约束和指引 •兼容了各种各样的场景 •功能多而杂,违背了奥卡姆剃刀原则 平台易用性层面 缺少产品视角的调优和规划 •用户的操作入口多 •操作事件的前后逻辑性差 平台推广层面 平台运营推广成本较高 •依靠专人贴身服务指导,耗时耗力,本末倒置 01 02 03 04 05 06 07 流程规范制定 制定组织级的流程规范,规范应尽量覆盖交付生命周期的各个环节,如依赖包,环境,数据库变更等,至少应覆盖和工程领域能力相关的流程规范,从而为工具的高度自动化奠定基础能力。 规范工具融合 通过将流程规范的约束嵌入到工具平台内,减少个性化服务场景的支持,实现规模统一化,步骤一致化,使用简单化。 服务场景提炼 基于研发过程的主要活动,识别交付过程中的核心服务场景,通过场景对单点能力进行识别聚合,将原有的单点自动化能力聚合为场景化的自动化服务能力,使其具备理想的平台工程化能力。 用户自服务 基于高度自动化的场景化服务能力,释放团队运营资源,降低运营成本,同时能够提升用户的体验,真正通过场景化的服务能力实现用户自服务,以及未来可能的工具平台“零服务”。 一个值得思考的指标 用户停留时长(UserSessionDuration) 用户停留时长是指用户在一次会话中从进入平台到离开平台所花费的总时间。这一指标可以反映用户在平台上的参与度和体验质量。 可能的结论 停留时长较长可能意味着用户对平台内容或功能的兴趣较高。但也不排除用户是在你的平台里迷了路。。。。 可能的解决方向:通过平台工程实践落地工具平台的场景化服务能力 到2026年,80%的大型软件工程组织将建立平台工程团队,将提供可重用的服务,组件和工具来支持应用的交付,平台工程将更进一步有效解决Dev和Ops之间的协 作问题。 工具模块 工具平台 平台工程 建立平台工程标准,指导国内企业平台团队工作与平台功能建设意义重大,帮助企业审视DevOps平台工程能力建设现状,优化平台工程能力框架,提供平台工程能力体系建设指导及参考,进而实现企业高质量发展,中国信通院牵头发起《研发运营一体化(DevOps)能力成熟度模型第13部分:平台工程能力要求》标准编制工作,这是首个针对DevOps平台工程能力成熟度的标准。 项目与开发管理平台域 应用设计与开发平台域 持续交付平台域 测试管理平台域 自动化测试平台域 移动应用测试平台域 技术运营平台域 DevSecOps平台域 •项目管理•工作项管理•计划管理•文档与知识管理•团队协同•统计度量•项目集管理 •应用框架•集成开发环境 •版本控制系统•构建与持续集成•流水线•制品管理•部署管理•发布管理•环境管理•应用配置管理•数据变更管理 •用例管理•测试计划管理 •接口/服务测试•UI测试•代码质量管理•单元测试•性能测试•测试数据管理 •适配兼容测试•移动自动化测试•客户端性能测试 •配置管理•运维数据分析•应用性能监控管理•基础监控管理•日志监控管理•自动化作业平台•容量管理•成本管理 •移动应用安全加固•资产安全风险管理•安全性测试 •静态应用安全测试•开源组件安全测试•动态应用安全测试•交互式应用安全测试•移动应用安全测试•容器静态安全测试•基础设施安全测试 威胁建模 •面向工具模块,如:工作项管理、流水线、自动化接口测试等 •验证企业工具单点功能符合度 •面向工具平台,如:项目管理平台、持续交 付平台、测试管理平台、技术运营平台等 •验证企业工具平台功能符合度 •平台包括多个工具模块 必选模块 +1项可选 全部模块 必选模块 +2项可选 全部模块 必选模块 +2项可选 全部模块 必选模块必选模块 +1项可选+1项可选 •面向一体化平台的场景化服务能力与平台团队管理能力,如:价值流场景、需求工程场景、研发工程场景、测试工程场景、运维工程场景、安全工程场景等 •验证企业一体化平台场景符合度 DevOps系统和工具标准规定了研发运营一体化(DevOps)过程中所涉及的系统和工具的能力技术要求,适用于在IT软件研发交付运营的使用方实施相关系统、工具和服务建设时进行评价和指导,将端到端软件交付生命周期全流程用工具链进行连接,包括:项目与开发管理、应用设计与开发、持续交付、测试管理、自动化测试、移动应用测试、技术运营、安全及风险管理。 DevOps工具平台发展经历的几个主要阶段 减少用户的使用和认知成本 C场景化建设阶段:聚焦于追求组织级卓越效能,通过服务化、生 态化、智能化的业技融合提升组织应对不确定性的整体响应力,提 升整个组织对于市场的响应速度和经营业绩。 特点:自研平台+整合工具(开源/商业/自研)-生态化 平台化建设阶段:聚焦于建设端到端的流水线,打通各个阶段环节的 B工具平台,沉淀总结提炼适合自身的研发模式,并将其固化到流水线平台,在组织内试点与推广,使得科技侧具备稳定快速且高质量交付的能力。 服务化 2-5年C 特点:半自研+封装工具(开源/商业)-平台化 •统一界面(入口)+固化实践(Portal化) •统一度量 平台化 1-2年B 工具化 0-1年 工具化建设阶段:在各个阶段搭建相对独立的技术工具平台,A A聚焦于工具化以及通过工具提升自动化水平。 特点:独立工具(开源/商业)-工具化 景化服务能力 工具平台的场 模板化创建 01 02 编排和嵌套 基础能力:打造工具平台的基础服务能力 流水线支持模板化创建,基于模板创建,方便开发人员手工配置流水线的繁琐过程,以提升其配置效率 代码变更触发 03 流水线支持代码变更触发,当代码发生变化时,将第一时间触发流水线运行,能够快速的反馈给开发人员代码修改的问题 质量门禁 05 流水线中的质量门禁,可以很好的实现自动化的质量控制,实现质量检查左移,及早的发现潜在的问题,避免在集成后期出现问题而导致大范围修改,影响效率 流水线的编排和嵌套,可以应对众多复杂的业务场景,实现流水线的灵活编排和调度 04 并行执行 基础能力 流水线的并行执行,除了节省平台的资源耗费情况,同时能够帮助开发人员减少平台的使用成本,使开发人员更能聚焦业务研发 06 配置代码化 流水线通过支持配置代码化,做到更好的版本控制,并增加系统场景化服务的能力,提高易用性 进阶能力:迈向工具平台的场景化服务能力 01 新建需求/任务 创建应用 创建分支 关联需求 环境申请 从功能堆砌 主要导向:能用 从单点到场景 关注开发者体验,从单点自动化到场景自动化 分支模型/策略 到场景化服务能力 主要导向:好用 非生产环境 02 新建需求/任务 创建/注册应用 应用配置 生产环境 非生产环境 应用基础设施 生产环境 单点能力的不断提升并外延,与其他单点能力结合,形成场景,场景来源于企业既定的业务流程,实现工具的连锁反应 解决场景化服务能力的关键:构建以应用为中心的交付模式 构建一个完整的应用画像,是实现场景化服务能力的基石 代码仓库 制品库 流 应用运行环境程 画像运行配置规范 流水线数据库 通过画像自动为开发团队提供不同场景诉求的服务能力 此图片来源于互联网 减少开发团队对平台内部的学习认知成本,使其更专注于业务开发 以应用为中心串联各服务 应用画像模板 基于模板可视化配置的应用画像 分支策略模板 环境配置模板 流水线模板配置模板部署模板 01分支管理规范 DevOps流程规范 指导手册 02流水线使用规范 03制品管理规范 04应用配置管理规范 05部署管理规范 构建应用画像是提供场景化服务能力的基础 分支模型 驱动代码分支和流水线的自动创建及关联 环境模型 驱动运行环境的自动生成驱动镜像的基础环境 技术栈类型 驱动流水线内部的结构编排,参数等 应用名称 仓库名称 分支名称 流水线名称 制品名称 制品路径 一个典型的基于模型画像的场景化服务能力 传统模式 这是平台工程的能力 当开发团队需要部署应用时 发起环境申请 填写环境申请信息 等待审批 准备环境 发放环境 部署应用 场景服务模式 当开发团队需要部署应用时 自动为其生成环境 部署应用 一类服务? 应用画像下的环境画像模型 ToB?内部? 其他?上海? 请求量? 基于环境画像预生成的环境信息 Web服务器 用途:处理用户请求、静态内容、页面渲染。配置: •CPU:4核 •内存:8GB •存储:SSD250GB •网络:千兆以太网卡数量:2台(负载均衡) 应用服务器 用途:处理业务逻辑、API调用。配置: CPU:8核内存:16GB 存储:SSD500GB 网络:千兆以太网卡 数量:2台(负载均衡) 数据库服务器 用途:存储用户数据、商品信息、订单记录等。配置: CPU:16核 内存:64GB 存储:SSD1TB(RAID10) 网络:千兆以太网卡 数量:2台(主从架构,数据同步) 缓存服务器 用途:缓存热门数据、加速查询响应。配置: CPU:4核内存:32GB 存储:SSD100GB 网络:千兆以太网卡 数量:2台(集群模式) 一个研发活动场景的示例 01020304 创建开发分支创建开发分支流水线提交代码到开发分支创建集成分支 05 创建集成分支流水线 06 创建MR 10090807 关闭需求/任务 提交测试 创建预合并分支流水线 创建预合并分支 对每个小的场景进行优化 从价值流的角度来讲,这部分属于非增值活动 自动创建功能分支 分支名称:Feature-TaskID 自动创建流水线 下载代码-构建-单测-静态扫描 (基于模板) 当一个需求被创建后 拖动需求至开发中 提交代码 属于增值活动,用户无需关注内部实现 当一个需求被创建后 拖动需求至开发中 创建功能分支 创建流水线 提交代码 应用画像+标准化 开发人员在接收需求后,一系列的开发活动,在基于应用画像后全部实现自动化 现在 未来 基于研发活动进行拆分:识别可自动化的业务场景 角色 用户行为 平台事件 触发条件 触发来源 开发 创建代码仓库 自动创建代码仓库 新建应用时 应用名称:和仓库名称有关技术栈:和仓库结构及内容有关 开发 创建开发分支 自动创建开发分支 需求/开发任务状态变为开始中 自动(基于分支模型) 开发 创建开发分支流水线 自动创建开发分支流水线 需求/开发任务状态变为开始中 自动(基于流水线固定