1、DevOps实践(精简版)目录一DevOps实施思路二DevOps实施效果展示四Q&A三DevOps实施经验总结DevOpsDevOps理念推进DevOps实施的主要阶段业务人员开发测试人员运维人员 最终用户想法市场计划和需求开发和测试发布和部署反馈和优化持续业务计划和需求分析协作式开发持续测试持续监控持续发布和部署DevOps精益和敏捷原理持续改进、持续反馈、持续优化DevOpsDevOps实施策略 建立适用于自身特点的DevOps实践体系 尽可能清晰定义活动边界、标准组件和标准 敏捷开发模式推荐作为DevOps的必选项 选择Scrum+KANBAN+XP实践方法 构建、部署活动一键执行,可
2、重复保质量 持续集成交付(CICD)可非专职人员进行 软件构建、部署对接自动化测试 代码编写规范和产出率的Sonar扫描 代码变更影响分析自动化评估 持续集成各环节时长度量 持续交付各环节成功率度量 代码质量各维度度量 根据度量结果进一步优化工作流程12345DevOpsDevOps体系全景图BACKLOG用户需求用户故事用户故事用户需求用户故事用户故事用户需求用户故事用户故事开发任务测试任务设计任务单元测试验证测试开发任务开发任务BACKLOG障碍问题计划会议:PO主持创建Sprint backlog评审会议:PO主持验收用户故事回顾会议:只有团队成员参与好的、待改进、如何改进看板+每日例会
3、:可视化流程鼓励团队沟通产品backlog:条目化用户故事优先级排序按用户故事组织开发和交付Sprint Backlog:经任务分解和估算的用户故事经设计的测试用例可以迭代完成的周期持续集成:自动化随需的软件构建、静态代码扫描、单元测试、部署任务领取编码&单元测试测试用例&自动化测试脚本集成测试环境准生产环境生产环境开发分支测试分支交付(生产)分支持续集成版本发布集成自动化测试UAT测试应用上线UAT测试组织者缺陷反馈开发测试环境自动化部署执行测试+自动化测试Scrum团队组成:干系人 PO ScrumMaster 团队(跨职能,开发,测试等)DevOps平台系统(工具集)用户故事未认领未开始
4、执行中阻塞完成1.需求敏捷 开发模式2.敏捷活动 与看板3.团队4.CICD目录一DevOps实施思路与计划二DevOps实施效果展示四Q&A三DevOps实施经验总结敏捷提效与瀑布流程对比需求提出需求分析功能设计代码开发测试验证发布上线运维监控1-2个月长周期交付无法及时响应需求变化需求从提出到上线反馈时间长1-2周短周期交付快速响应需求变化自动化测试保证质量瀑布式开发敏捷开发敏捷开发CI/CD自动化测试Sonar扫描成果展示敏捷团队与会议敏捷开发CI/CD自动化测试Sonar扫描成果展示建立融合型的敏捷开发团队业务POMaster团队运维提供业务需求及相关素材、负责需求澄清说明及验收确认需
5、求转化拆分为用户故事、面向团队代表客户进行需求跟踪协助团队完成迭代任务、排除团队面临的障碍、确保团队遵守敏捷开发规则根据需求实现迭代承诺并交付、完成迭代开发中的各项工程实践任务在团队实现需求时提出运维建议并在迭代评审时进行确认迭代启动会迭代计划会每日立会迭代评审迭代回顾迭代开始前3天进行,评估分析可以进入迭代的需求范围,后续进行需求分析,时长1小时迭代开始前1天进行,根据完成分析的需求进行迭代任务拆分,估算任务工作量,时长1小时迭代中每天早上9点40分准时开始,团队成员讲述任务完成情况,时长15分钟迭代结束后进行迭代评审,演示并验证交付的需求,展示单元测试和自动化测试结果,时长1小时迭代评审后
6、进行迭代回顾,总结迭代中的经验教训,确定下迭代的改进内容,时长30分钟敏捷管理流程导入用户原始需求拆分用户故事拆分迭代任务每日站立会议燃尽图跟踪敏捷开发CI/CD自动化测试Sonar扫描成果展示敏捷迭代量化数据分析量化数据分析:1.四个迭代,研发产出逐渐增加(按功能点数)2.生产率:超过行业基准(7.2人时/功能点)3.各个迭代在保证产出效率的情况下,增加了自动测试用例覆盖、减少了评审问题和BUG数,产出质量进一步改善4.在各个迭代中,逐渐确认了团队的实际产出能力和合适的故事任务拆分大小原则敏捷活动 每日立会及培训随着敏捷开发的深入实施,为北京移动的开发团队组织了接口自动化测试、UI自动化测试
7、、Sonar违规修改培训3次大规模培训,针对项目现场的特性,在不影响整体开发效率的前提下,个性化的调整了站立会议模式、迭代计划会议估算方法,通过简单易用的App工具来让团队成员快速识别拆分任务,领取任务。在迭代评审中通过实际成果展示,让团队成员可以感性的看到自己的工作成果。通过细化接口自动化测试任务,团队成员可以实现低投入高产出,一次开发长效使用,把自动化测试实施落到了实处。DevOpsDevOps实施落地 Sonar Sonar扫描Sonar效果:1) 阻断级违规: 405 - 202) 严重级违规: 2307-22913) 代码变更行数: 190 - 360+敏捷开发CI/CD自动化测试S
8、onar扫描成果展示DevOpsDevOps实施落地 CI/CDCI/CD整体流程图开发活动、测试活动、生产交付活动通过CICD系统串联自动化并全领域覆盖Agile-敏捷活动CI-持续集成CD-持续交付设计开发需求软件构建(代码&SQL)Sonar扫描单元测试Junit应用部署(测试环境)自动化测试(接口&UI)集成测试版本交付应用部署(准生产环境)验收测试应用部署(生产环境)系统运营敏捷开发CI/CD自动化测试Sonar扫描成果展示流程节点可定制DevOpsDevOps实施落地 CI/CDCI/CD按环境管理 按交付领域不同的环境进行分领域多维度的统一管理开发环境测试环境准生产环境生产环境分
9、领域集成预处理软件构建部署发布在线测试多维度敏捷开发CI/CD自动化测试Sonar扫描成果展示CI/CDCI/CD任务单提交变更流程 开发人员提交代码时,CI根据任务单号自动捕获、自动编译、自动测试环境部署需求单提交测试分支构建版本生成部署版本生成测试环境部署交付分支构建版本生成准生产环境部署生产环境部署交付使用敏捷开发CI/CD自动化测试Sonar扫描成果展示CI/CDCI/CD版本管理 发布版本管理详细关联具体的任务单信息,防止遗漏和多出任务部署版本构建版本部署版本构建版本构建版本构建版本Svn-测试分支Svn-生产分支测试环境生产环境准生产环境交付版本变更范围-需求处理范围-代码&SQL
10、来源-代码分支构建版本部署环境部署版本上线交付范围交付版本准生产环境测试环境CI/CDCI/CD持续部署开发环境生产环境多环境多规则多能力定时配置人工自助Jenkins调用Shell调用DevOpsDevOps实施落地 自动测试平台(ATPATP)其他对接系统用户HA/LVS安全认证API Gateway消息中心消息总线消息路由探测微服务性能测试微服务任务调度微服务仿真微服务7*24小时业务监控UI及接口自动化测试对压力性能测试进行管理代码审查微服务对源码进行编码审查安全扫描微服务对系统进行安全扫描Web服务器集群测试过程管理数据存储测试案例管理测试任务管理缺陷管理服务注册服务发现共享缓存日志
11、管理配置管理测试计划管理运维管理自动化测试微服务测试流程管控数据存储Iaas(测试资源管理)可持续集成敏捷开发CI/CD自动化测试Sonar扫描成果展示THANK YOUSUCCESS2022-5-12可编辑DevOpsDevOps实施落地 接口自动化测试工具接口自动化测试工具是自开发的接口及服务测试工具。主要特点包括:1.支持Http/https , WEB Service,Restful等接口协议2.支持HSF、CSF等微服接口协议3.支持接口定义批量导入4.支持从接口报文自动解析接口定义5.支持自动解析WSDL6.支持个性化的报文加解密敏捷开发CI/CD自动化测试Sonar扫描成果展示实
12、施效果:1.目前已完成30个接口自动测试用例,涵盖5类模块2.每次持续集成(CI)部署必须调用接口自动测试3.确保关键接口的高可用性4.每个成员都承担接口测试用例的编写与调试工作,不由专人负责DevOpsDevOps实施落地 UI UI自动化测试1. 目前已完成测试案例11个,覆盖业务推荐、业务查询、业务办理等系统菜单2. 另外开发了快速验证channel、commission、app-web-console等多平台发布状态的冒烟测试案例,用于日常发布环境验证。3. UI自动化测试计划已经可以从持续集成(CI)调用4. 同步开展CRM和BOSS侧UI自动化测试工作敏捷开发CI/CD自动化测试S
13、onar扫描成果展示封装SeleniumDevOpsDevOps实施落地 门户面板 DevOps多节点过程数据整合度量及统一展示 持续集成面板:构建数据、分支合并数据、部署数据 Sonar度量面板:违规、技术债、复杂度、注释率等 单元测试面板:单元测试覆盖率、通过率 自动测试面板:含接口自动测试、UI自动测试的测试通过率、覆盖率、测试汇总结果等 持续交付面板:版本上线及部署情况 运维监控面板:主机、服务等资源状况、应用状态等数据展示DevOpsDevOps实施成果展示 CI/CD CI/CD过程提效代码编译频率编译时长部署时长编译问题处理测试环境部署频率SQL合并&执行自动化测试持续集成(编译
14、、部署、接口&UI自动化)实施前1次/天20分钟30分钟人工分析&口头协调1次/天人工收集执行无各环节人工触发实施后大于5次4分钟7分钟自动定位&自动邮件=4次/天自动收集执行应用部署后自动触发约23分钟流程自动化过程可视化反馈及时化测试常态化解放人力促进协同增强沟通保证质量问题及早发现结果持续可见过程自动提效持续集成部署综合效率提升超过300%,8月份共编译92次,部署48次敏捷开发CI/CD自动化测试Sonar扫描成果展示DevOpsDevOps实施成果展示 团队能力提升团队进行需求分解快速完成并行任务迭代交付完整需求团队合作取代单打独斗知识技能团队共享团队能力和士气快速提升 通过站会、评
15、审、讨论、任务完成奖励等方式提高团队熟悉程度和信任 成员之间自动产生了提前完成任务的比较心理 新技术手段的引入,带来了成员新的学习热情以团队合作取代单打独斗的工作方式,团队内形成了良好的知识分享和技能提升的氛围,大家可以积极领取任务并保质完成,在迭代结束时可以看到完成的成果,士气得到了很好的提升。敏捷开发CI/CD自动化测试Sonar扫描成果展示DevOpsDevOps实施成果展示 敏捷成熟度敏捷成熟度模型和DevOps成熟度模型参考CMMI成熟度模型及行业经验制定DevOpsDevOps实施成果展示 DevOps DevOps成熟度目录一DevOps实施思路与计划二DevOps实施效果展示四
16、Q&A三DevOps实施经验总结北京移动DevOpsDevOps试点实施计划与完成情况北京移动DevOpsDevOps试点实施计划与完成情况( (续) )试点经验1. 经验总结 紧急需求:预留10-15%的产能,或预留不纳入敏捷流程的支撑人员 代码版本:使用持续集成工具(CI)自动进行代码分支合并,不再人工管理 自组织团队建设:培养团队综合能力,从功能型团队转为产品团队 迭代实施原则:每1-2个迭代增加一个节点流程,减少转型阻力 激励机制:按时或提前完成任务,给团队成员一定的奖励,鼓励更好的协作与承诺 因地制宜:根据应用系统的实际情况对DevOps各个环节进行相应裁减,并充分利用已有资源系统
17、高ROI原则:先进行最高性价比的节点实践,如先上接口自动化测试工具。2. 不足之处 缺少对运维运营侧工作的整体融合方案 灰度发布需要系统架构的同步升级达成成果3. 取得的成果需求交付时间团队开发效率代码提交频率集成频率部署流程代码质量自动化测试发布次数正常排期需求交付时间从实施敏捷开发前的2周到缩短为1周团队开发效率从实施敏捷开发前的7人时/功能点提升到3.94人时/功能点(行业均值7.2人时)从实施敏捷开发前的不固定到每天50次以上的提交测试环境从实施敏捷开发前的每天1次到每小时1次从实施敏捷开发前的手工部署到自动化部署测试环境从每天1次到每天4次,生产环境由每月2次到可以随需要立即发布从实
18、施敏捷开发前的空白到单元测试、Sonar扫描、代码评审工具全支持从实施敏捷开发前的空白到接口自动化测试、UI自动化测试全覆盖目标达成DevOpsDevOps实施的关键特性总结1.版本控制:开发、测试、部署等各种版本2.分支策略:双分支或三分支管控3.代码质量扫描:基于Sonar4.单元测试覆盖:核心模块80%以上5.漏洞扫描:结合安全测试(待实施)6.开源工具扫描:优选可靠开源工具,及时修补漏洞7.制品(工件)版本控制:Nexus制品仓库,CI统一管理8.环境自动创建:需调用DCOS或其他云平台功能(待实施)9.不可变服务器:需容器化(待实施)10. 性能测试:自动化的性能测试和必要的手工测试
19、(待实施)11. 每次提交都触发自动构建、自动部署、自动化测试:基于CMP实现12. 自动化变更请求:每次关键变更自动处理13. 零停机发布:灰度发布、应用无状态化(待实施)14. 功能开关:业务服务功能可以由开关控制,而无需更新版本15. 统一视图门户:基于CMP实现待实践灰度发布与容器化(基于K8sK8s或MesosMesos) )LB负载均衡CD云平台灰度发布典型流程:可部分更新服务,并选择更新的实例数如果更新成功,更新会暂停可将部分流量引导至新实例,进行测试如果测试通过,可继续更新剩余实例如果测试失败,可将服务回滚至旧版本在任何阶段如果更新发生错误,可将服务回滚到旧版本真正的灰度发布需
20、要实现应用容器化、数据库分布化以及负载均衡的无状态切换DevOpsDevOps在大PaasPaas规划中的定位DevOps是大Paas平台规划中的核心组成部分,有了DevOps能力才使快速交付、热修复和灰度发布成为可能SaaSPaaSIaaS通用fuwuX86服务器DockerVMPower网络存储网络存储基础设施业务能力渠道中心客户中心营销中心产品中心客服中心资源中心订单中心支付中心开通中心合作伙伴计费中心结算中心账务中心信用中心账单中心策略中心IDE开发工具开发需求BUG管理版本管理发布管理开发流水线 企业内部应用CRMECSESOP对外能力提供数据共享电信接口社会服务IPSDocker引
21、擎多租户管理资源管理组件超市集群管理系统管理服务管理软件资产管理业务服务技术服务COMFRAMECSFDADBLog4XAmberAICache关系数据库AMBER规则引擎负载均衡负载均衡MSGFS弹性计算服务大数据服务规则中心统一事件中心日志处理框架二维码权限管理框架消息处理中心资源调度与编排应用生命周期管理技术能力服务与管理仓库技术组件统一异常处理灰度发布热修复平台调用连分析日志分析配置管理审批管理系统配置Paas平台门户运营方OP使用方OP提供方OPDevOps CloudDevOpsDevOps后续计划待实施 持续部署实践 支持DCOS调用 小任务的热部署 Docker支持 灰度发布支持 。待优化 纳入人工Code Review流程 纳入代码影响分析流程 和运维监控平台的接口 Cucumber ATDD(验收测试驱动开发)模式应用 。待讨论 和需求管理系统进一步整合 应急需求的合并原则 运维侧优化整合方案 生产环境网络限制问题 DevOps和大Paas平台的深度融合 。THANK YOUSUCCESS2022-5-12可编辑