前言与概述
伴随着企业业务的快速发展,为了支撑业务发展,提高IT对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理;在研发管理协同方面,希望实现从需求提出、需求规划、需求设计需求设计、需求开发、需求测试、需求上线的端到端的管理,并支持瀑布模型和敏捷模型的项目开发。
基于以上背景,企业更希望借助研发运营一体化体系的建设和DevOps工具平台的建设赋能研发,提高质效。
什么是DevOps
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称。用于促进开发(应用程序/软件工程)、测试(QA)、技术运营之间的沟通、协作与整合通过高度自动化工具与流程,使得软件构建、测试、发布更加快捷、频繁和可靠,从而快速交付想法、尽快让客户尝试从而获取反馈、快速响应客户反馈、提升业务速度,或尽量降低运营成本和减少浪费。
研发运营一体化(devops)能力成熟度模型
- DevOps国内翻译为开发运维一体化,但目前人们更多关注的是在开发与测试域,运维域仅有自动化发布归属DevOps。DevOps作为最佳实践,旨在提高软件交付速度和质量,打通部门间壁垒,促进协同,做到了从需求到运维,端到端的流程打通和可视化。
- DevOps平台基础版包括代码配置管理、自动化编译打包、自动化部署/发布;高级版除基础版模块外,还包括需求管理、项目管理、开发管理、测试管理等协同功能。
- 经过多年的发展和演进,DevOps已经形成了较为完备的知识体系,那就是以精益管理为基础,敏捷管理、持续交付、IT服务管理为支柱的知识体系。
下图为研发运营一体化能力成熟度模型图,旨在帮助企业更好地理解和规范 DevOps 的落地实施与应用。
研发运营面临的“四大”挑战
- 业务压力:激烈的市场竞争对业务提出更高的要求,数字化转型成为产业升级的重要抓手,快速、高效、高质量的交付业务价值。
- 技术压力:云原生等新技术在带来便捷的同时,也增加了交付与维护的复杂度,对技术人员提出了更高的要求。
- 效能压力:随着组织规模越来越大,多团队、多项目、多产品协作成本越来越高,单人效率日渐下降。
- 成本压力:研发运营成本日益高企;复合型人才稀缺。
信息化程度走高后,暴露的研发运营问题
团队之间、不同角色之间协同效率低(信息离散难回溯,沟通成本高、效率低)
- 任务的分配、状态追踪需要人工(当面/邮件/会议等)反馈、跟踪;
- 线下沟通,参与人员多,邮件多,会议多,沟通成本高;
- 风险(比如延迟开发、SIT、UAT)的反馈慢。
研发过程割裂,缺乏研发运营一体化平台(IT资源管理成本高、无法做过程优化)
- 多个团队都有自己的研发工具,重复造轮子;
- 交付件、发布内容缺乏统一管理,没有版本规范,流程管理规范;
- 工具互不关联,数据无法集成,任务协调进度无法集成。
IT侧的响应跟不上市场竞争节奏(市场商机稍纵即逝、IT成本越堆越高)
- 业务迭代频率越来越高,现在的交付模式已经成为瓶颈;
- 发布过程复杂及人工操作时间久,发布涉及不同系统或数据库之间的前后发布依赖、部分复杂的应用;
- 前无法实现自动化发布,手工发布的系统比例较大。
系统可用性无法保障(用户流失、业务流程阻塞)
- 发布完成后,仅能做简单验证服务启动成功,对业务功能验证,并无好的方法;
- 线上服务没有故障快速发现,缺少自动化运维能力(健康检查、弹性伸缩、 故障自恢复等)。
研发运营一体化建设思路
价值流交付平台使企业组织能够简化 DevOps 交付流水线的构建和管理。它们最大限度地减少了编排、集成和治理中涉及的开销,从而通过为工作流程提供可见性、可追溯性和可观察性来最大化价值。 产品基于价值流管理的思想,引入DevOps价值流管理理念,通过建设科学、规范、高效的一体化软件研发效能体系与平台,提升组织级软件交付、运维效能,以实现对企业数字化转型及业务创新的有力支撑和持续驱动,达到一体化、统一化、场景化、自动化、可视化的目标。
- 体系化:引入DevOps、ITIL体系框架,建设科学的研发运营体系,实现企业的数字化转型和业务价值创新。
- 统一化:通过建设规范、高效的一体化研发运营平台,实现多角色、多维度、多视角线上化的高效协作。
- 场景化:通过模板化、规则化等手段,实现多种研发交付场景下的管理与生产动作的联动,从而实现从左到右端到端的价值流动,实现部门协同管理。
- 自动化:以软件交付工序为主线,集成专业化IT服务管理工具、配置管理等生产工具,提升持续交付、持续运营的自动化能力。
- 可视化:通过价值流可视化能力来分析价值和浪费,促进端到端的价值流快速流动。
解决方案
研发运营一体化建设蓝图规划
研发运营一体化平台,实现了企业从需求、规划、设计、开发、测试、发布、运维的端到端的管理。在需求全过程中涉及到需求管理、项目协作、配置管理、测试管理、发布管理、运维管理以及研发效能度量等活动,典型场景如下:
- 业务人员提交意向需求,BA进行需求分析,编写业务需求和软件需求,并将需求关联到相关项目。
- 项目经理制定迭代计划,将需求分配到相关迭代计划,并将需求转化成任务,分配给开发人员。
- 开发人员按照任务完成代码开发,并提交代码,配置管理人员按照分支合并源代码,并手工触发流水线执行,流水线自动完成构建、自动化部署、自动化测试等工作,待测试人员完成测试用例的执行和报告后,执行发布流水线,最终完成生产部署工作。
研发运营一体化平台应用架构
研发运营一体化平台应用架构具体分为项目管理、产品管理、需求管理、测试管理、发布管理以及运维管理6大模块。未来平台将继续开放敏捷管理、代码库管理、流水线以及制品管理等模块功能。
研发运营一体化平台技术架构
云原生
- 服务化前后端分离、基于Rest API 交互,后端基于DDD拆分微服务;
- 前端采用Vue+H5、后端采用Spring Cloud开发框架。
- 容器化支持应用容器化部署和管理,支持资源动态伸缩。
- DevOps通过IaC构建DevOps(GitOps)
服务化
- 开放API便于三方集成及生态化发展。
- 集成HUB抽象集成层、数据模型便于集成及映射。
场景案例
场景一:高效协作,全流程解决方案
- 实现需求管理流程、项目管理流程、测试管理流程、发布管理流程、变更管理流程、事件管理流程的全流程打通。
场景二:多维度、多层次研发协同
- 实现业务人员、需求人员、产品经理、项目经理、开发人员、测试人员、部署人员、运维人员高效协同个信息共享。
场景三:需求端到端的管理
- 面向业务,实现从需求收集、需求分析、需求规划、需求开发、构建和部署、需求测试、需求发布的端到端管理;
- 支持需求的逐层分解(创意、史诗、特性、用户故事)和细化;
- 支持需求的自动化跟踪和可视化管理。
场景四:项目全周期管理
- 实现项目从启动、计划、执行&控制、结项的全生命周期管理;
- 支持瀑布模型和敏捷模型的项目管理;
- 支持项目迭代计划和里程碑计划管理。
场景五:统一软件配置管理
- 全生命周期:从规划到产品交付投产的端到端的企业级配置管理全生命周期的统一化、线上化支持;
- 分层级分角色管理:区分组织级、项目级角色;组织级可以关注在统一管控、支持指导方面;项目级角色可以进行日常的配置管理和环境管理的工作;
- 多工具支持:企业内不同团队可根据需要自行选择版本管理工具支撑开发。
场景六:测试全周期管理
- 按照测试任务,编写或者关联测试用例,执行测试用例,记录测试结果,并生成测试报告;
- 建立统一测试用例库,测试任务从测试用例库提取测试用例。
场景七:自动化流水线
- 全链路工具链集成
- 流水线编排和调度
场景八:运维服务流程和DevOps的集成场景
- 实现运维发布管理和发布流水线的自动化对接;
- 实现制品元数据与CMDB信息的自动化同步。
场景九:基于服务端到端DevOps与CMDB的融合
- CMDB为端到端的服务交付过程提供数据基础,提供部署环境信息。
- 发布完成后,DevOps自动同步应用配置基线数据到CMDB
场景十:研发运营一体化价值度量
项目建设收益
提高IT管理效率
- 通过统一平台、统一入口管理,管理者能够掌握软件研发全过程的信息,对软件研发全过程进行可视化掌控,及时了解需求、设计、开发、配置、构建、测试、部署等情况,实现可视化、透明化管理。
提升IT工程效率
- 一键式部署,实现代码提取、分支合并、自动构建、自动化测试、自动化部署的全过程管理。全过程无需人工干预,降低相关人员的技术和工具要求,同时产品支持自动化撤版和回滚,降低运维生产事故和风险。
增强系统稳定性,提高项目质量
- 实现项目全过程的规范化管理,通过自动化流水线,降低出错的机率,通过集成安全、质量、自动化测试工具,实现对交付质量的自动化检测,提高交付质量。
FlyFish开源福利
云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。
点击下方地址链接,欢迎大家给 FlyFish 点赞送 Star。参与组件开发,更有万元现金等你来拿。
GitHub 地址: https://github.com/CloudWise-...
Gitee 地址:https://gitee.com/CloudWise/f...
微信扫描识别下方二维码,备注【飞鱼】加入AIOps社区飞鱼开发者交流群,与 FlyFish 项目 PMC 面对面交流~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。