大规模团队 DevOps 转型实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 大规模团队 DevOps 转型实 践 分享人:司玉美
2. 目 录 01 改进背景 02 实施路径 03 主要实践
3. 互联网用户增长放缓,竞争加剧 VUCA 时代,用户拥有更多的选择权,聚焦用户(客户)价值 / 快速适应变化是成功的关键!
4. 共识:小批量是高效交付的基础 自动化技术: 松耦合架构: • 快速、持续的小批量 代码和部署 完整工具链: • 需求协作 • Devops 工具链 松 耦 合 架 构 完 整 工 具 链 自 动 化 技 术 MVP : • 产品版本规划 需求管理: • 需求拆分和优先级 MVP 规划 需求 管理 持续 集成 基础设施、组织和文化 度 量 与 可 视 化 持续 部署 • 编译构建 • 静态扫描 • 自动化测试 • 自动化部署 • 自动化发布 度量与可视化: • 效能度量 • 业务数据 • 运行监控
5. 共识:构建信任是激发团队的基石  团队激励:  团队自管理时效率最高  对自己做出的承诺比别人要求的承诺更认真  员工会尽力做到最好  在强大的压力下努力工作,员工会自然而然地降低对质量的要求  团队绩效:  当成员不被打扰时,工作效率最高  当团队解决自我问题时,提升最快  广泛的、面对面的交流是团队工作最高效方式  团队构建:  团队生产率大于相同数目的个体生产率之和  当不同技能领域的人员组成团队并聚焦于工作时,产品更健壮 Source: Jeff CSM Training material
6. 构建研发效能管理体系 01 需求协作 03 制品库管 04 代码质量 06 持续集成 07 自动化测 08 环境的准 09 部署运营 02 配置管理 05 测试管理 管理 理 管理 管理 试 备与管理 发布 产品创新 需求和项目管理 基础设施标准化 效能提升落地的主要方向 代码和架构 10 架构 11 数据觉察 12 结果指标 工程实践
7. 效能度量指标 It you can’t measure it, you can’t manage it” --Peter F. Drucker
8. 业务 DevOps 转型背景 01 部署频率低 + 发布周期长 产品发布周期长( LT 30 天以 解放生产力 + 低成本试错 研发效能的发展落后于业务的发展速度, 需解放生产力 02 上),需要尽快构筑快速触达 用户能力 。 03 工程师素养 +“ 技术债”的鸿沟 模块 / 组件划分不清晰,耦合程度较高 基础自动能力弱 + 后置的质量 自动化程度低;无效等待时间过长; Bug 反馈弧过长 , Bug 后置 04 研发团队快速增长,工程素养参差不齐
9. DevOps 转型路径—质量的左移和 2 个自动化  总体原则:质量左移,工程自动化和流程自动化 持续部署 和发布 小批量交付 代码质量文 化 基础质量不降低的情况下,提升需求价值流转效率  分阶段:开发负责质量、小批量交付、数据 / 价值驱动  实施原则:基于理想模型,因地制宜制定合适解决方案 通过阶段目标制,促进个人和组织渐进转型 2 个自动化 质量内建 质量前置 人员转型: 开发负责质量:能像测试一样测试验证 开发参与设计:能像产品一样产品思维 开发参与运维:能像运维一样了解数据
10. 主活动流——实施要点 需求 编码 发布: 1. 一键灰度放量 2. Crash 智能分发 3. 特性开关 4. alpla 版本 构建: 1. 归一构建流程 2. 规范 MR 流程 3. 分层分级的 CD 4. QG- 质量红线 5. CI&CD 需求: 1. 需求评审和设计前置 2. 优先级和需求项量化 3. 需求实例化 4. 需求颗粒度拆分 构建 开发: 1. 统一的编码规范 2. 强制 CR 原则 3. 分支管理 & 流程自动化 4. 统一技术栈 / 插件化 5. 自测 & 用例设计 6. 自动化能力建设 7. 特性开关 测试 发布 测试: 1. 缩短测试周期 2. bug 前置到增量 3. 分层用例建设 4. 自动化 & 覆盖率 5. 日 alpha 体验 发布后 发布后: 1. 一键式用户反馈 2. 关键指标分析 3. 缺陷 FST 4. 需求 Leadtime
11. 实践一: FST 驱动缺陷前移,塑造团队持续改善的习惯  基于 FST 实施方案,确认瓶颈环节 FST: PIQ 缺陷低成本理论  以 PIQ 降低为目标驱动各环节缺陷前移  批量分析,建立缺陷预防和举一反三机制 code review 是有价值的,测试左移是有价值 的 随着版本交付频率的不断加快,团队测试活动向左右两侧移动
12. 实践二:归一主活动的工作流,建立大团队协作节奏 常见场景:  大规模团队协作困难  需求大,习惯大招;  部件依赖多,进度难管理  临时变更多、抱怨多 举措:  优化迭代 Timebox ,共识迭代活动日历  统一需求拆解语言,从 Feature 到 US 需求拆小  基于优先级的协作、基于置换原则的变更管理  数据驱动需求收益量化  研发流程流转自动化
13. 实践三:质量内建在流水线中  覆盖率质量红线:  全量覆盖率 >= 0.5  用例通过率 >= 1  增量覆盖率 >= 0.6  代码检查:   新增 ( 致命 + 错误 ) 问题 <= 0 存量 ( 致命 + 错误 ) 问题 <= 0  圈复杂度阈值 <= 10  敏感信息严重告警数 <= 0  持续集成成功率,从低于 90% 提升至 95%
14. 实践四:减少等待、快速反馈的分支模式演进 2020.05 之前 初始分支模式 2020.05 - 2020.11 过渡模式 2020.11 之后 主干模式 feature/ 团队分支开发 较高频率个人分支开发,开发负责 主干开发,集成发布 ,集中合入主干,集成 增量,完成后合入主干,集成测试 高频发版 测试后可发布 后可发布 目标模式: • 从大功能型 -> 任务型研发模式 • 从阶段大集成到随时集成 • 从手工为主到高度完善的自动化测试
15. 实践五:高频发布的利器—特性开关 特性开关,是业务“频繁发布”能力推进的有力支持  新特性可见控制,将代码集成与功能上线有效隔离  BUG 可以通过开关实时关闭,及时控制风险  按需、高效、有序地对新特性的可见范围进行控制 1. 在满足业务需求的前提下,尽可能少用开关技术 2. 如果在“分支”和“开关”之间选择,尽可能选择开关技术 3. 对开关配置项进行统一管理 4. 尽可能使用统一的开关框架和开发策略 5. 定期清理不必要的开关
16. 实践六: alpha 发布—让体验无处不在 一周开发 一周开发 主干 bugfix 发布分 支 Alpha 版 集成测试 灰度放量 Beta 版 Alpha 版, 1 天发版 1-3 次 Git Release 版 Build Beta 版, 1 周发版 1-3 次 For 内部员工,测试为主 For 内部员工 + 热心用户群 持续发版 Release 版, 1-2 周发版一次 For 所有用户
17. 改进——我们在路上  每月 BUG 数降低 70% , Bug 率降低 60%  需求吞吐量同比提升 40%  需求 Leadtime 降低到 10 天内
18. 改进——协作 能不能有点靠 谱的设计 ? 这个问题是测 试漏测 P0 用例自测不 通过,不提测 ! 问题和我 没关系 这个设计这样 做似乎更好 ? 不定稿不开发 ! 需求变更又不 知会测试 ! v s 这个问题是我们没 有给回归建议 又加需求了 ! 这部分开发完了, 先测试下 我的任务完成了 啊 ? 测试给了很多 给力的帮助 这个设计思路, 开发同学看看 ? 这个用户体验不 够好 优先级可否 调整下 他那边事情多, 我来搞定
19. 一个 Feature 从开发到上线的关键路径上, 除了功能开发之外的时间,要尽 量短。不改变现有流程,以及人的行为习惯,实施 DevOps , 本身就是不现实的 ! 机制改变行为,行为改进文化! ——DevOps 三剑客

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-24 11:14
浙ICP备14020137号-1 $Map of visitor$