2018/10/14,#,DevOps,实践,(精简版),目录,一,DevOps,实施思路,二,DevOps,实施效果展示,四,Q&A,三,DevOps,实施经验总结,DevOps,理念,推进,DevOps,实施的主要阶段,业务人员,开发,测试人员,运维人员,最终用户,想法,市场,计划和需求,开发和测试,发布和部署,反馈和优化,持续业务计划和需求分析,协作式开发,持续测试,持续监控,持续发布和部署,DevOps,精益和敏捷原理,持续改进、持续反馈、持续优化,DevOps,实施策略,体系,建立,敏捷,提效,任务,自助,内建,质量,度量,改进,建立适用于自身特点的,DevOps,实践体系,尽可能清晰定义活动边界、标准组件和标准,敏捷开发模式,推荐作为,DevOps,的必选项,选择,Scrum+KANBAN+XP,实践方法,构建、部署活动一键执行,可重复保质量,持续集成交付(,CI,CD,)可非专职人员进行,软件构建、部署对接,自动化测试,代码编写规范和产出率的,Sonar,扫描,代码变更,影响分析自动化评估,持续集成各环节时长度量,持续交付各环节成功率度量,代码质量各维度度量,根据度量结果进一步,优化,工作流程,1,2,3,4,5,5,种核心策略,DevOps,体系全景图,整体流程,BACKLOG,用户需求,用户故事,用户故事,用户需求,用户故事,用户故事,用户需求,用户故事,用户故事,开发任务,测试任务,设计任务,单元测试,验证测试,开发任务,开发任务,BACKLOG,障碍,问题,计划,会议:,PO,主持,创建,Sprint backlog,评审,会议:,PO,主持,验收用户故事,回顾,会议:,只有团队成员参与,好的、待改进、如何改进,看板,+,每日例会:,可视化流程,鼓励团队沟通,产品,backlog,:,条目化用户故事,优先级排序,按用户故事组织开发和交付,Sprint Backlog,:,经任务分解和估算的用户故事,经设计的测试用例,可以迭代完成的周期,持续集成:,自动化随需的软件构建、静态代码扫描、单元测试、部署,任务领取,编码,&,单元测试,测试用例,&,自动化测试脚本,集成测试环境,准生产环境,生产环境,开发分支,测试分支,交付,(,生产,),分支,持续集成,版本发布,集成自动化测试,UAT,测试,应用上线,UAT,测试组织者,缺陷反馈,开发测试环境,自动化部署,执行测试,+,自动化测试,Scrum,团队组成:,干系人,PO,ScrumMaster,团队(跨职能,开发,测试等),DevOps,平台系统,(,工具集,),用户故事,未认领,未开始,执行中,阻塞,完成,1.,需求敏捷,开发模式,2,.,敏捷活动,与看板,3,.,团队,4,.CI,CD,目录,一,DevOps,实施思路与计划,二,DevOps,实施效果展示,四,Q&A,三,DevOps,实施经验总结,敏捷提效与瀑布流程对比,需求提出,需求分析,功能设计,代码开发,测试验证,发布上线,运维监控,1-2,个月长周期交付,无法及时响应需求变化,需求从提出到上线反馈时间长,1-2,周短周期交付,快速响应需求变化,自动化测试保证质量,瀑布式开发,敏捷,开发,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,敏捷团队与会议,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,建立融合型的敏捷开发团队,业务,PO,Master,团队,运维,提供业务需求及相关素材、负责需求澄清说明及验收确认,需求转化拆分为用户故事、面向团队代表客户进行需求跟踪,协助团队完成迭代任务、排除团队面临的障碍、确保团队遵守敏捷开发规则,根据需求实现迭代承诺并交付、完成迭代开发中的各项工程实践任务,在团队实现需求时提出运维建议并在迭代评审时进行确认,迭代启动会,迭代计划会,每日立会,迭代评审,迭代回顾,迭代开始前,3,天进行,评估分析可以进入迭代的需求范围,后续进行需求分析,时长,1,小时,迭代开始前,1,天进行,根据完成分析的需求进行迭代任务拆分,估算任务工作量,时长,1,小时,迭代中每天早上,9,点,40,分准时开始,团队成员讲述任务完成情况,时长,15,分钟,迭代结束后进行迭代评审,演示并验证交付的需求,展示单元测试和自动化测试结果,时长,1,小时,迭代评审后进行迭代回顾,总结迭代中的经验教训,确定下迭代的改进内容,时长,30,分钟,敏捷管理流程,导入用户原始需求,拆分用户故事,拆分迭代任务,每日站立会议燃尽图跟踪,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,敏捷,迭代量化数据分析,量化数据分析:,1,.,四个迭代,,研发产出,逐渐增加(按功能点数),2,.,生产率,:超过行业基准(,7.2,人时,/,功能点),3,.,各个迭代在保证产出效率的情况下,增加了自动测试用例覆盖、减少了评审问题和,BUG,数,,产出质量,进一步改善,4,.,在各个迭代中,逐渐确认了团队的实际产出能力和合适的,故事任务拆分大小原则,敏捷活动,每日立会及培训,随着敏捷开发的深入实施,为北京移动的开发团队组织了接口自动化测试、,UI,自动化测试、,Sonar,违规修改培训,3,次大规模培训,针对项目现场的特性,在不影响整体开发效率的前提下,个性化的调整了站立会议模式、迭代计划会议估算方法,通过简单易用的,App,工具来让团队成员快速识别拆分任务,领取任务。在迭代评审中通过实际成果展示,让团队成员可以感性的看到自己的工作成果。通过细化接口自动化测试任务,团队成员可以实现低投入高产出,一次开发长效使用,把自动化测试实施落到了实处。,DevOps,实施落地,Sonar,扫描,Sonar,效果:,1),阻断级违规:,405-20,2),严重级违规,:,2307-2291,3),代码变更行数,:,19,0-360+,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,DevOps,实施落地,CI/CD,整体流程图,CI/CD,整体流程,开发活动、测试活动、生产交付活动通过,CI,CD,系统串联自动化并全领域覆盖,Agile-,敏捷,活动,CI-,持续集成,CD-,持续,交付,设计,开发,需求,软件构建,(,代码,&SQL),Sonar,扫描,单元测试,Junit,应用部署,(,测试环境,),自动化测试,(,接口,&UI),集成测试,版本交付,应用部署,(,准生产环境,),验收测试,应用部署,(,生产环境,),系统运营,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,流程节点,可定制,DevOps,实施落地,CI/CD,按环境管理,多业务环境的处理,按交付领域不同的环境进行分领域多维度的统一管理,开发环境,测试环境,准生产环境,生产环境,分领域,集成预处理,软件构建,部署发布,在线测试,多维度,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,CI/CD,任务单提交变更流程,开发人员直观视角,开发人员提交代码时,,CI,根据任务单号自动捕获、自动编译、自动测试环境部署,需求单提交,测试分支,构建版本生成,部署版本生成,测试环境部署,交付分支,构建版本生成,准生产,环境部署,生产环境部署,交付使用,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,CI/CD,版本管理,统一的版本管控,发布版本管理详细关联具体的任务单信息,防止遗漏和多出任务,部署版本,构建版本,部署版本,构建版本,构建版本,构建版本,Svn-,测试分支,Svn-,生产分支,测试环境,生产环境,准生产,环境,交付版本,变更范围,-,需求,处理范围,-,代码,&SQL,来源,-,代码分支,构建版本,部署环境,部署版本,上线交付范围,交付版本,准生产,环境,测试,环境,CI/CD,持续部署,开发,环境,生产,环境,多环境,多规则,多能力,定时配置,人工自助,Jenkins,调用,Shell,调用,DevOps,实施落地,自动测试平台(,ATP,),其他对接系统,用户,HA/LVS,安全,认证,API Gateway,消息中心,消息总线,消息路由,探测微服务,性能测试微服务,任务调度微服务,仿真微服务,7*24,小时业务监控,UI,及接口自动化测试,对压力性能测试进行管理,代码审查微服务,对源码进行,编码审查,安全扫描微服务,对系统进行,安全扫描,Web,服务器集群,测试过程管理,数据存储,测试案例管理,测试任务管理,缺陷管理,服务注册,服务发现,共享缓存,日志管理,配置管理,测试计划管理,运维管理,自动化测试微服务,测试流程管控,数据存储,Iaas,(测试资源管理),可持续集成,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,DevOps,实施落地,接口自动化测试工具,接口自动化测试工具是,自开发,的,接口及服务测试,工具。,主要特点包括:,1,.,支持,Http/https,WEB Service,Restful,等接口协议,2,.,支持,HSF,、,CSF,等微服接口协议,3,.,支持接口定义批量导入,4,.,支持从接口报文自动解析接口定义,5,.,支持自动解析,WSDL,6,.,支持个性化的报文加解密,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,实施效果:,1,.,目前已完成,30,个接口自动测试用例,涵盖,5,类,模块,2,.,每次持续集成(,CI,)部署,必须调用,接口自动测试,3,.,确保关键接口的高可用性,4,.,每个成员,都承担接口测试用例的编写与调试工作,不由专人负责,DevOps,实施落地,UI,自动化测试,目前已完成测试案例,1,1,个,,覆盖业务推荐、业务查询、业务,办理,等系统菜单,另外开发了快速验证channel、commission、app-web-console等多平台发布状态,的冒烟测试案例,,用于日常发布环境验证。,UI,自动化测试计划已经可以从持续集成,(,CI,)调用,同步开展,CRM,和,BOSS,侧,UI,自动化测试工作,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,封装,Selenium,DevOps,实施落地,门户面板,多维度的数据沉淀、维护、度量,DevOps,多节点过程数据整合度量及统一展示,持续集成面板:构建数据、分支合并数据、部署数据,Sonar,度量面板:违规、技术债、复杂度、注释率等,单元测试面板:单元测试覆盖率、通过率,自动测试面板:含接口自动测试、,UI,自动测试的测试通过率、覆盖率、测试汇总结果等,持续交付面板:版本上线及部署情况,运维监控面板:主机、服务等资源状况、应用状态等数据展示,DevOps,实施成果展示,CI/CD,过程提效,代码编译,频率,编译时长,部署时长,编译问题,处理,测试环境部署频率,SQL,合并,&,执行,自动化测试,持续集成,(编译、部署、接口,&UI,自动化),实施前,1,次,/,天,20,分钟,30,分钟,人工分析,&,口头协调,1,次,/,天,人工收集执行,无,各环节人工触发,实施后,大于,5,次,4,分钟,7,分钟,自动定位,&,自动邮件,=4,次,/,天,自动收集执行,应用部署后自动触发,约,23,分钟,流程自动化,过程可视化,反馈及时化,测试常态化,解放人力,促进协同,增强沟通,保证质量,问题及早发现,结果持续可见,过程自动提效,持续集成部署综合效率提升超过,3,00,%,,,8,月份共编译,92,次,,部署,48,次,敏捷开发,CI/CD,自动化测试,Sonar,扫描,成果展示,DevOps,实施成果展示,团队能力提升,团队进行需求分解,快速完成并行任务,迭代交付完整需求,团队合作取代单打独斗,知识技能团队共享,团队能力和士气快速提升,通过站会、评审、讨论、任务完成奖励等方式提高团队熟悉程度和信任,成员之间自动产生了提前完成任务的比较心理,新技术手段的引入,带来了成员新的学习热情,以团队合作取代单打独斗的工作方式,团队内形成了良好的知识分享和技能提升的氛围,大家可以积极领取任务并保质完成,在迭代结束时可以看到完成的成果,