背景信息
HE2E DevOps实施框架,是一套可操作可落地的敏捷开发方法论,如下图所示。
HE2E DevOps实施框架
- 规划和设计
步骤①和②是业务(或者是客户)与技术之间进行产品规划,梳理产品整体脉络,以及进行产品规划实施设计,并控制需求粒度与拆分的过程。- 软件开发的本质是为了解决问题,提供用户价值的,而不仅是为了提供功能。影响地图就是用来鉴别用户需求是什么,深层的根因是什么。
- 用户故事就是目标和需求的载体,以用户的场景来讲故事,便于在客户、业务与开发之间进行信息的传递。在这个过程中,独立的需求条目的堆积,很容易导致只能看到各个需求条目,不能从整个解决方案思考需求。用户故事以用户使用的场景为主线,将大的阶段点,及其细分的活动,以树状的结构进行梳理和展现,既可以看到独立的需求条目,又能够看到整体需求场景。
- 计划和跟踪、迭代开发
步骤③~⑩是Scrum框架过程,是主要的管理实践。- Scrum定义了一个相对完整的敏捷过程管理的框架。在软件开发生产线中,将Scrum的框架与团队日常的开发活动,很好的融合起来。主要的过程产物包括产品故事列表、迭代故事列表、潜在可交付的产品增量、以及过程中产生的问题列表;核心的团队活动包括Sprint计划会议、团队每日站会、Sprint演示会议、Sprint回顾会议等会议、以及团队的日常更新。
- 同时,将Kanban方法与Scrum框架进行了结合,团队借鉴Kanban方法中的精益思想,可视化价值流,发现并解决阻塞与瓶颈,加速价值流交付,并加快反馈回路,持续进行改进。
- 持续交付
从步骤⑪开始,进入到工程实践,也就是通常说的CI/CD过程。- 持续交付以代码配置管理为基础,除了传统意义的代码资产安全与管控、多人并行开发、版本与基线管理外,也体现了团队的协作与沟通。
- 代码检查(即静态扫描)、自动化的构建、各阶段的自动化测试、以及相应的自动化部署过程,都被有机的串联在流水线上。
- 除了代码检查、构建、测试、部署等动态的阶段与活动,还有制品管理,以及各级的环境管理,包括开发环境、测试环境、准生产环境,以及生产环境。
- 持续交付流水线就是将整个持续交付中,都有哪些阶段,分别运行在什么环境,每个阶段执行什么活动,准入与准出的质量门禁,以及每个阶段的输入与输出的制品进行管理。
应用场景
通过一套汽车零部件配件电子商城示例代码“凤凰商城”,以及“DevOps全流程样例项目”,介绍如何使用软件开发生产线实现HE2E DevOps框架。该方案适用于敏捷/Scrum研发项目。
方案架构
- “凤凰商城”示例程序架构
“凤凰商城”示例程序的架构图如下图所示。
凤凰商城技术架构图
示例程序由下表中的5个可以独立开发、测试和部署的微服务组件构成。
凤凰商城微服务组件表
微服务组件 | 说明 |
---|---|
Web用户端服务器(对应样例代码中的“Vote”功能) | 业务逻辑:用户可以通过浏览器访问此服务的WebUI。当用户在特定商品上单击“Like”时,服务将用户所选择物品的记录保存在Redis缓存中。 技术栈:Python、Flask框架。 应用服务器:Gunicorn。 |
Web管理端服务器(对应样例代码中的“Result”功能) | 业务逻辑:用户可以通过浏览器访问此服务的WebUI,会动态显示用户端UI上用户单击“Like”的统计数据,此数据来自PostgreSQL数据库。 技术栈:Node.js、express框架。 应用服务器:server.js。 |
后台订单批处理程序(对应样例代码中的“Worker”功能) | 业务逻辑:此服务为后台进程,会监控Redis缓存中物品记录,并将新纪录取出并保存在PostgreSQL数据库中,以便管理端UI可以抽取数据进行统计显示。 技术栈:.net core或者Java(此服务提供两种技术栈实现了同样的功能,可根据需要修改配置选择其中一个作为运行时进程)。 |
订单缓存 | 业务逻辑:此服务作为用户端UI服务的数据持久化服务存在。 技术栈:Redis |
订单数据库 | 业务逻辑:此服务作为管理端UI服务的数据源。 技术栈:PostgreSQL |
- “DevOps全流程样例项目”构成
“DevOps全流程样例项目”是一个Scrum类型的模板项目,项目中预置了部分服务的使用模板。项目实践过程中涉及到的产品及服务如下表。
实践涉及产品/服务列表
服务 说明 软件开发生产线 需求管理 预置3个已规划并已完成的迭代、项目的模块设置、以及若干统计报表。 代码托管 预置代码仓库“phoenix-sample”,存放项目示例代码。 代码检查 预置4个任务,任务详情介绍请参见步骤四:检查代码。 编译构建 预置5个任务,任务详情介绍请参见步骤五:构建应用。 制品仓库 用于存储通过构建任务生成的软件包。 部署 预置3个应用,应用详情介绍请参见步骤六:部署应用CCE篇。 测试计划 功能测试用例库,预置十余个测试用例。 流水线 预置5条流水线,流水线详情介绍请参见步骤八:配置流水线,实现持续交付。 其它组件和服务 统一身份认证服务 用于管理帐号。 容器镜像服务 用于存放构建任务生成的Docker镜像。 云容器引擎 用于软件包部署,与ECS部署属于两种不同的部署方式。 云主机 用于软件包部署,与CCE部署属于两种不同的部署方式。
方案优势
- 针对需求变动频繁、开发测试环境复杂、多版本分支维护困难、无法有效监控进度和质量等研发痛点,提供一站式云端管理平台,管理软件开发全过程。
- 提供可视化、可定制的持续交付流水线服务,实现持续交付,让软件上线提速一倍。