HE2E DevOps实践介绍
本文档基于微服务架构的应用程序“凤凰商城”,使用DevCloud进行全流程管理。
“凤凰商城”示例程序简介
“凤凰商城”是一套汽车零部件配件电子商城示例代码。此套示例代码具有结构与逻辑简单、代码量少、技术栈丰富的特点,可以帮助开发者快速了解DevCloud的各项特性以及使用微服务解决软件开发、测试和部署过程中可能遇到的各种问题。
- 架构与业务场景
凤凰商城示例程序架构图如图1所示。
示例程序由表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(此服务提供两种技术栈实现了同样的功能,可根据需要修改配置选择其中一个作为运行时进程)。
订单缓存(对应样例代码中的“Redis”功能)
业务逻辑:此服务作为用户端UI服务的数据持久化服务存在。
订单数据库(对应样例代码中的“PostgreSQL”功能)
业务逻辑:此服务作为管理端UI服务的数据源。
- 页面展示
- 调试、测试、打包和部署方式
示例程序全部使用Docker进行打包和部署,并使用docker-compose作为配置文件的基本格式。
本地调试可以使用以下命令(确保在代码库的根目录中执行):
docker-compose up
“DevOps全流程样例项目”简介
DevCloud提供了一个样例项目“DevOps全流程样例项目”来承载“凤凰商城”示例程序,本文档通过此样例项目讲解软件研发生命周期的操作。
“DevOps全流程样例项目”是一个Scrum类型的模板项目,项目中预置了部分DevCloud服务的使用模板。项目实践过程中涉及到的产品及服务如表2。
服务 |
说明 |
|
---|---|---|
DevCloud使用模板 |
预置项目的整体需求规划图、3个已规划并已完成的迭代、项目的模块设置、以及若干统计报表。 |
|
预置代码仓库phoenix-sample,存放“凤凰商城”项目代码。 |
||
预置4个代码检查任务,任务详情介绍请参见步骤五:检查项目代码。 |
||
预置5个编译构建任务,任务详情介绍请参见步骤六:构建应用。 |
||
3个部署任务,任务详情介绍请参见步骤七:部署应用(ECS篇)。 |
||
功能测试用例库,包含十余个测试用例。 |
||
5个流水线任务,任务详情介绍请参见步骤八:配置流水线,实现持续交付。 |
||
用于开发项目代码。 |
||
用于存储通过编译构建任务生成的软件包。 |
||
其它华为云组件和服务 |
用于管理帐号。 |
|
用于存放编译构建任务中生成的Docker镜像。 |
||
用于软件包部署。 |
||
用于软件包部署,与ECS部署属于两种不同的部署方式。 |
实践流程
本文档将按照以下步骤介绍HE2E DevOps实践的操作流程。
- 准备实践环境。
- 管理项目规划。
- 管理项目配置。
- 开发项目代码。
- 检查项目代码。
- 构建应用
请参照步骤六:构建应用配置编译构建任务,包括:
- 配置并执行编译构建任务。
- 设置提交代码触发自动编译。
- 设置定时执行编译构建任务。
- 部署应用。
- 创建流水线
请参照步骤八:配置流水线,实现持续交付创建并配置流水线,包括:
- 配置并执行流水线。
- 配置质量门禁。
- 配置代码变更自动触发流水线。
- 释放资源
