持续交付:新产品的成长思维


Gdevops.com 全球敏捷运维峰会 广州站 演讲人:黎嘉豪 持续交付:新产品的成长思维 Gdevops 全球敏捷运维峰会 Gdevops.com 全球敏捷运维峰会 广州站 自我介绍 • 云计算研发高级工程师 • 百度工程效率部 – 技术教练 • 工程师,负责研发工具链、持续交付、DevOps • 百度学院高级讲师 • 『百度方法+』持续交付专题作者 Gdevops.com 全球敏捷运维峰会 广州站 效率 质量 ü 专注、极致、口碑、快 ü 快速迭代 ü 快速转型 ü 只有第一,没有第二 ü 用户体验至上 ü 细节决定成败 ü 缺陷 -> 差评 -> 卸载 ü 服务故障 ->市场丢失 软件交付面临易变性、不确定性、复杂性、模糊性 互联网时代对软件交付的诉求 我们处在一个VUCA的时代 Gdevops.com 全球敏捷运维峰会 广州站 团队的挑战 Gdevops.com 全球敏捷运维峰会 广州站 快速上线 从需求到交付端到端交 付周期缩短 质量保证 效率提升的同时,保 证质量稳定 团队的挑战 Gdevops.com 全球敏捷运维峰会 广州站 精益创业的产品开发方式 需要 不断 + 低成本 + 快速 验 证想法 团队的挑战 Gdevops.com 全球敏捷运维峰会 广州站 业务 开发 运维测试 软件交付过程 业务 开发 运维测试 墙 墙 墙 • 运维排期紧张,上线存在等待 • 手工部署繁琐,易出现人为错 误 • 测试周期长,占研发比重大 • 自动化测试程度低,质量把控不严格 • 需求传递层次增多,信息不全 • 需求不易理解,且经常变更 无法满足业务快速、稳定交付的要求 效率低,存在浪费 反馈慢,质量保证不全 故障多,操作耗时长 人员、流程、技术被「墙」阻断,Throw it over the wall… 团队的挑战 Gdevops.com 全球敏捷运维峰会 广州站 开发领域 运维领域 Gdevops.com 全球敏捷运维峰会 广州站 Gdevops.com 全球敏捷运维峰会 广州站 进度 不可控 流程 不可靠 环境 不稳定 协作 不顺畅 分支过多 合并困难 缺陷爆发 测试阻塞 版本混乱 无法回溯 环境公用 未知错误 部署复杂 经常失败 等待上线 周期太长 发现故障 无法定位 线上报警 紧急回滚 Gdevops.com 全球敏捷运维峰会 广州站 Gdevops.com 全球敏捷运维峰会 广州站 我们的目标 缩短提交代码  部署上线时间 快速得到反馈 软件处于随时都可以部署的状态 可将任意发布的版本、部署在任意环境中 交付过程:可靠、可预期、可视化 Gdevops.com 全球敏捷运维峰会 广州站 划分阶段(Stage): • 多个Stages是串行 执行 • 前一个Stage成功 完成后自动触发 • 也可以通过手工触 发 执行作业(Job ) : • Stage里的多个Jobs串/ 并行执行 • Stage里的多个Jobs定时 执行 • 自动判断或人工标记 Pass/Fail • Job Fails  Stage Fails 决策点(人工干预): • 可配置人工决策, 一键Approve后流 水线自动执行 • 也可配置前序 Stage成功后自动 触发执行 质量门(通过标准): • Pass/Fail判定标准 • 测试通过率>xx% • 代码覆盖率>xx% 编译和单测 Job 1.1 Job 1.2 模块测试 Job 2.1 Job 2.2 系统测试 Job 3.1 Job 3.2 预上线 Job 4.1 Job 4.2 生产-全量 Job 6.1 生产-灰度 Job 5.1代码提交 有规律的 有计划的时间点 发布计划 可靠可重复的流水线 Gdevops.com 全球敏捷运维峰会 广州站 流 水 线 配置管理 构建管理 持续集成 测试管理 环境管理 部署管理 l 记录项目中的一切变化 l 加速构建速度,管理模块依赖 l 让软件随时可以运行 l 分级测试,建立快速反馈环 l 弹性灵活的基础设施 l 无差异的部署过程,减少上线风险 组成流水线的元素 Gdevops.com 全球敏捷运维峰会 广州站 全面的配置管理 版本控制 源代码、测试代码 数据库脚本 构建、部署脚本 文档、库文件 依赖管理 组件管理 外部库文件管理 软件配置管理 构建、部署、运行 所需的配置文件 环境管理 基础设施 操作系统 运行软件依赖工具、软件 Gdevops.com 全球敏捷运维峰会 广州站 主干开发、分支发布 • 主干开发,自动化验证通过后,拉出Release Branch分支提测 • QA在RB上执行补充测试、如有bug则修复,并且同步到主干,基于分支发布版本 • 上线后发现Bug, 基于从上次上线的分支进行开发和发布 ,待上完线后将代码Merge回主干 主干 开发Local build 提 交 提 交 提 交 主干测试 发布分支RB 测试 上线 拉 分 支 开发Local build 开发Local build M e rg e B u g F ix M e rg e 配置管理 - 分支策略 B u g F ix Gdevops.com 全球敏捷运维峰会 广州站 41 3 52 6 7 主干 1. 从稳定的最新版本中 Check out 代码 2. 在本地开发新的功能 3. 执行本地构建(测试,代码检查) 4. 再次Check out 代码 5. 执行本地构建(测试,代码检查) 6. 提交代码至当前主干 7. 执行主干上的编译,等待持续集成结果 8. 如果通过则结束,没有通过则跳转到步骤(2) 配置管理 – Check In Dance Gdevops.com 全球敏捷运维峰会 广州站 配置管理 – Gerrit Workflow Gdevops.com 全球敏捷运维峰会 广州站 Mac Pro 编译集群 Ubuntu编译集群 CentOS编译集群 Windows编译集群 其他定制编译集群 调度策略 提交 编译任务进行构建 代码提交前 local build 构建管理 l 集群加速,提高并发场景吞吐量 l 模块间依赖采用二进制构建产物 l 机器针对编译任务硬件优化 l 构建任务从Push 改成 Pull l 编译结果推送至『产品仓库』管理 l 1-5-10 法则 Gdevops.com 全球敏捷运维峰会 广州站 坚持的原则: • 频繁提交 • 主干上做持续集成 • 至少每天进行集成 • 自动化构建和测试 • 分级测试快速反馈 • 红灯需要立即修复 持续集成 Gdevops.com 全球敏捷运维峰会 广州站 分级 测试模型 建立分级测试体系,从多个层次和多个验证角度实现质量防护网 测试管理 Gdevops.com 全球敏捷运维峰会 广州站 建立分级测试体系,保持编译和测试结果能快速反馈 测试管理 Gdevops.com 全球敏捷运维峰会 广州站 环境管理:容器技术 Gdevops.com 全球敏捷运维峰会 广州站 环境管理:容器与虚拟化 Gdevops.com 全球敏捷运维峰会 广州站 服务描述包含两部分: • Service描述 • Package • Server个数 • 集群分布 • Operation描述 • 上线过程的并发控制 • 部署暂停点 • 容错处理 部署管理 - 服务描述 Gdevops.com 全球敏捷运维峰会 广州站 部署管理 - 灰度发布 Gdevops.com 全球敏捷运维峰会 广州站 最佳实践汇总 Gdevops.com 全球敏捷运维峰会 广州站 交付流水线 Gdevops.com 全球敏捷运维峰会 广州站 数据度量和分析 Gdevops.com 全球敏捷运维峰会 广州站 持续交付技术栈 Gdevops.com 全球敏捷运维峰会 广州站 编译 单元测试 模块测试 系统测试 发布发单 上线 上线检查 • 编译、开发、测试、部署上线全面加速,整体交付周期明显缩短 • 各角色可以基于统一的交付流水线紧密协作,产品交付过程可视化、可控制 • 每日多次发布能力、故障快速回滚的能力 持续交付效果案例回顾 Gdevops.com 全球敏捷运维峰会 广州站 持续交付效果案例 Gdevops.com 全球敏捷运维峰会 广州站 快速交付 从需求到交付, 端到端周期缩短 保证质量 效率提升的同时, 保证质量稳定 降低风险 稳定节奏的交付, 增强可预测性 持续交付的价值 Gdevops.com 全球敏捷运维峰会 广州站 Q: 仅涉及一行代码的改动需要花多长时间 才能部署上线? Q:我们是否以一种可重复且可靠的方式来 做这件事的吗? 引用:《Implementing Lean Software Development》,Page. 59 团队做得怎么样? Gdevops.com 全球敏捷运维峰会 广州站 Q & A Gdevops.com 全球敏捷运维峰会 广州站 THANK YOU! Gdevops 全球敏捷运维峰会
还剩35页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

antgril

贡献于2018-06-07

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf