持续交付(高效率与高质量交付演讲PPT)

上传人:jiups****uk12 文档编号:54879464 上传时间:2018-09-21 格式:PPTX 页数:34 大小:4.34MB
返回 下载 相关 举报
持续交付(高效率与高质量交付演讲PPT)_第1页
第1页 / 共34页
持续交付(高效率与高质量交付演讲PPT)_第2页
第2页 / 共34页
持续交付(高效率与高质量交付演讲PPT)_第3页
第3页 / 共34页
持续交付(高效率与高质量交付演讲PPT)_第4页
第4页 / 共34页
持续交付(高效率与高质量交付演讲PPT)_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《持续交付(高效率与高质量交付演讲PPT)》由会员分享,可在线阅读,更多相关《持续交付(高效率与高质量交付演讲PPT)(34页珍藏版)》请在金锄头文库上搜索。

1、,持续交付-高效率和高质量可以兼得,效率,质量, 专注、极致、口碑、快 快速迭代 唯快不破, 只有第一,没有第二, 用户体验至上 细节决定成败 缺陷-差评-卸载, 服务故障-百倍赔付,互联网时代对软件交付的诉求我们处在一个VUCA的时代软件交付面临易变性、不确定性、复杂性、模糊性,业界互联网公司软件交付能力概况,数据来源:The Phoenix Project:A Novel About IT, DevOps, and Helping Your Business Win,仅涉及一行代码的改动需要花多长时间才能部署上线? 你是以一种可重复且可靠的方式来做这件事的吗?,引用:Implementin

2、g Lean Software Development,Page. 59,除此之外,还有Facebook、Twitter等国际互联网巨头,都有非常高的部署频率,6050403020100,120010008006004002000,一月,二月,三月,四月,五月,六月,百度某产品部署频率统计某产品生产环境部署次数,每工作日部署次数,每月部署次数,流程,进度 不可控,传统软件交付的困境,package 里版本号脚本修改错误 不可靠,环境 不稳定,分支过多 合并困难,缺陷爆发 测试阻塞,协作不顺畅版本混乱 无法回溯,环境公用 未知错误,部署复杂 经常失败,等待上线 周期太长,发现故障 无法定位,线上

3、报警 紧急回滚,业务,开发,运维,测试,墙,墙,墙,传统软件研发和交付过程无法满足业务快速、稳定交付的要求,需求以文档传递,缺乏沟通 需求描述不清,且经常变更效率低,存在浪费,测试反馈周期长,测试占研发比重大 自动化测试程度低,质量把控不完备反馈慢,质量保证不全, 运维排期紧张,上线需要等待 手工运维繁琐、复杂、易出错故障多,操作耗时长,传统软件交付过程的问题分析人员、流程、技术被墙阻断,Throw it over the wall,持续交付的解决思路,S,S,S,O,D,业务 从源头改变交付模式研发的最大的浪费是构建没有人使用的东西精益创业:更小、更快的迭代流程验证想法最简可行产品(MVP)

4、验证式学习循环,用户故事地图:需求全景和发布计划看板:可视化方法管理流动,业务 看板,功能的生命周期可视化,管理流动并且要建立需求到代码的追踪机制,建立需求卡片到代码的关联,流程 - 可靠可重复的流水线,通过流水线阶段划分,平衡测试反馈速度与覆盖度通过流水线分析瓶颈、识别自动化改造点和协作点,全流量,交付流水线演进:模块级原始的、低效的流水线,代码合入,编译,单元测试,模块测试,系统测试,提测,系统测试,发布,预上线,现代化、高效的流水线,主干合并自动触发,一键式操作,自动触发,定时触发,邮件通知,自动触发,一键式操作,一键式操作,一键式操作,申请版本填写表单,编译单机编译环境,手工执行编译,

5、单元测试执行测试脚本,撰写单测报告编写测试报告文档,提测发邮件或消息,告知版本号、地址,系统测试手工准备环境,手工执行部署,手工执行测试,撰写测试报告编写测试报告文档,发上线单填写表单,编写上线步骤文档,上线审批工单流转,QA、RD、OP审批,上线手工准备环境,手工执行部署,手工冒烟测试,编译集群 分布式编译加速 自动上传产品库,自动执行测试脚本 自动部署测试环境 自动统计测试覆盖率 自动执行测试脚本,自动部署测试环境 自动执行测试脚本,自动部署测试环境 手工执行测试 设定四位版本 自动部署环境 部署后自动冒烟测试 非功能和异常测试 自动上传正式产品库 部署后自动冒烟测试设置测试结果状态 执行

6、端到端场景测试,部署后自动冒烟测试,提交到代码库 Code Review 代码规范检查,Offline,Online 小流量,Online N套自动部署环境,交付流水线演进:产品级,编码和自测,代码合入,触发编译和测试,Daily测试,集成测试阶段,发布阶段,系统测试,代码 合入,拉出 分支,单元测试编译-临 时产品库,发布四位版本- 生产镜像,发布四位版本- 生产镜像,发布四位 版本-正 式产品库,Pre-submit开发,提交检出 代码,生 产 监 控,系统测试,代码 合入,单元测试编译-临 时产品库,Pre-submit开发,提交检出 代码,Pre-submit,单元测试,模块测试,系统

7、测试,代码 合入,编译-临 时产品库,开发,提交检出 代码,模 块 一,模 块 二,模 块 三,端到 端的 集成 测试性能 压力 稳定 性测试,提测,提测,提测,模块测试制作镜像 -镜像库,准入测试编译-制作镜像-镜像库,拉出 分支,准入测试编译-制作镜像-镜像库,拉出 分支,准入测试,编译-临 时产品库,完整 的端 到端 测试性能 压力 稳定 性测试,小流量-全流量,小流量-全流量,小流量-全流量,模块测试制作镜像 -镜像库,17,交付流水线的工具落地,开源方案:GoCD、Spinnaker 自研方案:百度Agile平台,配置管理 Feature Branch,RD在自己的分支工作,隔离其他

8、工作变更,场景A:分支开发,分支发布,发布后合并主干 场景B:分支开发,分支测试,主干回归,主干发布,存在的问题:,最终还是要集成,如果不同分支代码有交互,合并时大量冲突需要解决(文本冲突、语意冲突) 合并冲突时易出错,发布后容易忘记合并回主干 每个分支建立单独的测试流水线,浪费资源,并且其实未实施集成测试,带来的好处:,多个Feature完全并行开发,互不影响 可以选择Feature进行发布,不会被其他功能阻塞,拉分支,配置管理 Trunk Based Development,RD经过充分的本地验证后,频繁提交代码到主干,场景A:主干开发、主干发布 场景B:主干开发、分支发布,主干上功能开发

9、有先后,有未完成的功能但又需要发布时,需要能隐藏未完成部分为了避免以上情况,有三种递进的方式: (1)功能拆分,小批量频繁发布;(2)后端先行,UI或功能入口后发布;(3)功能开关,配置决定功能,带来的好处:,主干持续集成,在冲突形成的早期发现 主干一直健康,每次合入后都可安全发布,主干,开发&Local build,主干测试,发布分支,RB 测试,上线,开发&Local build开发&Local build存在的问题:,全量部署包,提供稳定的控制接口差异化部署使用配置派生自定义上线步骤,GIT/SVN,构建回溯,配置管理 部署包规范标准化部署包规范,提升大规模部署时的自动化程度,配置管理

10、配置注入的方式,Mac Pro 编译集群,Ubuntu编译集群,CentOS编译集群,Windows编译集群,其他定制编译集群,调度策略,l 集群加速,提高并发场景吞吐量,l 机器针对编译任务硬件优化,l 模块间依赖采用二进制构建产物l 使用增量编译l C+模块间使用distcc和ccache分布式编译l 编译结果推送至制品仓库管理,构建管理提供云编译服务,标准化编译环境,提升编译效率l 标准化编译配置文件,代码提交自动编译,测试管理,分级,测试模型,建立分级测试体系,从多个层次和多个验证角度实现质量防护网,持续集成重点在原则的坚持:,小改动,逐步构建每人每天提交代码在主干上持续集成至少每天进

11、行集成使用持续集成工具自动化构建和测试分级测试快速反馈红灯需要立即修复,StorageNetworking,VirtualizationServers,Data,Applications,RuntimeMiddlewareO/S,StorageNetworking,VirtualizationServers,Data,Applications,RuntimeMiddlewareO/S,PaaS,SYS(硬运维),OP(软运维),环境管理,转为平台运维,上线时间降低(小时级别 - 分钟级别) 扩容效率提升(天级别 - 分钟级别) 运维效率提升,人均运维机器数(百台 - 千台),流程繁杂,需运维介

12、入手工操作多 跨团队协作,沟通和协调成本高 运维效率低,派单周期长、问题多,环境管理 - PaaS平台,隔离与混部:资源高效、充分利用,环境管理 容器集群管理开源方案:K8S + Docker自研方案:百度Matrix系统Matrix作为百度数据中心的容器集群管理系统,为所有的产品线提供规范的底层架构 资源管理:提供虚拟化的容器资源,部署管理,部署管理遵循的原则,部署包全部来自制品仓库,各环境使用相同部署方式各环境使用相同部署脚本,部署流程编排,阶梯式晋级运维人员参与部署过程创建只有流水线才可变更生产环境, 防止配置漂移不可变(Immutable)服务器热部署:蓝绿部署、金丝雀发布,自动化监控

13、自动化监控,自动化测试,自动化测试,自动化测试,产品A 测试环境产品B 测试环境产品C 测试环境,编译集群,模块测试,提交代码,主干持续集成,沙盒 测试环境,预上线环境,自动化测试自动化测试自动部署 自动化测试,自动/手工测试自动部署,拉分支自动部署,源码库代码、配置、脚本,系统测试,单元测试分支发布,自动化编译,内网生产环境 自动部署自动部署外网生产环境,候选发布版本,每台服务器都是不同的,自动化、配置化的环境管理,不可变服务器(Immutable Server),部署管理 - 不可变服务器,-,基础架构 持续交付技术栈,bH - TRxri,n,eh,-,&-,&-,-,oBE-,a,M,

14、cSl,t,t,nlNU,v,m,-,&- &-,-,S,DN,A,psuetue,Ki,-,-,i,-,D,P P,t t,gCueI D, Source Code, Test Code, App Conf, Pack Confh i-,&-,&-, ,QM C P ,G,O,R,psA,- -,QMS,-,技术异构性、弹性、扩展性、,简化部署、与组织结构匹配、可组合性、优化可替代性微服务架构实践,每个服务独立部署每个服务独立构建流水线在隔离的容器中运行服务消费者驱动的测试(CDC ),应用架构 微服务架构微服务架构是一种分布式系统解决方案,推动细粒度服务的使用,这些服务协同工作,且每个服务都有自己的 生命周期。微服务架构优点,静态代码构成的大型系统在编译、 重型的测试上都耗费很多时间系统升级需要重启,影响对外提供,服务,甚至会影响收入配置化架构的优点,通过配置,在较低的变更成本下, 实现快速的调整软件系统,应用架构 配置化架构配置化架构是指可配置的方式构建软件的方法。它是在领域建模的基础上,以配置表述业务,以配置组织架构 元素(服务、组件、数据),并对配置进行规范化、自动化的管理。配置化架构解决的问题,沟 通协 作集 成,DEV 遵从配置管理策略,坚持持续集成习惯非功能、运维需求构建监控反馈通道培养端到端责任文化构造更贴近生产的环境,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号