更新时间:2023-12-04 GMT+08:00

方案概述

背景信息

华为端到端(HE2E)DevOps实施框架,是结合了多年研发经验并集合了业界先进的实践所形成的一套可操作可落地的敏捷开发方法论,如图1所示。

图1 HE2E DevOps实施框架
  • 规划和设计
    步骤①和②是业务(或者是客户)与技术之间进行产品规划,梳理产品整体脉络,以及进行产品规划实施设计,并控制需求粒度与拆分的过程。
    • 软件开发的本质是为了解决问题,提供用户价值的,而不仅是为了提供功能。影响地图就是用来鉴别用户需求是什么,深层的根因是什么。
    • 用户故事就是目标和需求的载体,以用户的场景来讲故事,便于在客户、业务与开发之间进行信息的传递。在这个过程中,独立的需求条目的堆积,很容易导致只能看到各个需求条目,不能从整个解决方案思考需求。用户故事以用户使用的场景为主线,将大的阶段点,及其细分的活动,以树状的结构进行梳理和展现,既可以看到独立的需求条目,又能够看到整体需求场景。
  • 计划和跟踪、迭代开发
    步骤③~⑩是Scrum框架过程,是主要的管理实践。
    • Scrum定义了一个相对完整的敏捷过程管理的框架。在CodeArts中,将Scrum的框架与团队日常的开发活动,很好的融合起来。主要的过程产物包括产品故事列表、迭代故事列表、潜在可交付的产品增量、以及过程中产生的问题列表;核心的团队活动包括Sprint计划会议、团队每日站会、Sprint演示会议、Sprint回顾会议等会议、以及团队的日常更新。
  • 持续交付
    从步骤⑪开始,进入到工程实践,也就是通常说的CI/CD过程。
    • 持续交付以代码配置管理为基础,除了传统意义的代码资产安全与管控、多人并行开发、版本与基线管理外,也体现了团队的协作与沟通。
    • 代码检查(即静态扫描)、自动化的构建、各阶段的自动化测试、以及相应的自动化部署过程,都被有机的串联在流水线上。
    • 除了代码检查、构建、测试、部署等动态的阶段与活动,还有制品管理,以及各级的环境管理,包括开发环境、测试环境、准生产环境,以及生产环境。
    • 持续交付流水线就是将整个持续交付中,都有哪些阶段,分别运行在什么环境,每个阶段执行什么活动,准入与准出的质量门禁,以及每个阶段的输入与输出的制品进行管理。

应用场景

通过一套汽车零部件配件电子商城示例代码“凤凰商城”,以及“DevOps全流程示例项目”,介绍如何使用CodeArts实现HE2E DevOps框架。该方案适用于敏捷/Scrum研发项目。

方案架构

  • “凤凰商城”示例程序架构

    “凤凰商城”示例程序的架构图如图2所示。

    图2 凤凰商城技术架构图

    示例程序由表1中的5个可以独立开发、测试和部署的微服务组件构成。

    表1 凤凰商城微服务组件表

    微服务组件

    说明

    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类型的模板项目,项目中预置了部分服务的使用模板。项目实践过程中涉及到的产品及服务如下表。

    表2 实践涉及产品/服务列表

    服务

    说明

    软件开发生产线

    需求管理

    预置3个已规划并已完成的迭代、项目的模块设置、以及若干统计报表。

    代码托管

    预置代码仓库“phoenix-sample”,存放项目示例代码。

    代码检查

    预置4个任务,任务详情介绍请参见步骤四:检查代码

    编译构建

    预置5个任务,任务详情介绍请参见步骤五:构建应用

    制品仓库

    用于存储通过构建任务生成的软件包。

    部署

    预置3个应用,应用详情介绍请参见步骤六:部署应用(CCE篇)

    测试计划

    功能测试用例库,预置十余个测试用例。

    流水线

    预置5条流水线,流水线详情介绍请参见步骤八:配置流水线,实现持续交付

    其它组件和服务

    统一身份认证服务

    用于管理帐号。

    容器镜像服务

    用于存放构建任务生成的Docker镜像。

    云容器引擎

    用于软件包部署,与ECS部署属于两种不同的部署方式。

    弹性云服务器

    用于软件包部署,与CCE部署属于两种不同的部署方式。

方案优势

  • 针对需求变动频繁、开发测试环境复杂、多版本分支维护困难、无法有效监控进度和质量等研发痛点,提供一站式云端管理平台,管理软件开发全过程。
  • 提供可视化、可定制的持续交付流水线服务,实现持续交付,让软件上线提速一倍。