deploy-ease-platform/backend/docs/deploy-ease-platform-v2.md
2024-12-03 18:18:31 +08:00

348 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Deploy Ease Platform V2 设计文档
## 一、系统概述
### 1.1 系统目标
- 构建一个高度可扩展的自动化部署平台
- 支持灵活的工作流配置和审批流程
- 实现多环境、多租户的部署管理
- 提供完整的日志追踪和监控能力
### 1.2 核心功能
1. 项目管理
- 项目集管理
- 项目配置
- Git仓库集成
- Jenkins集成
2. 环境管理
- 环境配置
- 环境克隆
- 环境变量管理
- 权限控制
3. 工作流引擎
- 流程设计
- 节点执行
- 状态管理
- 日志追踪
4. 审批系统
- 审批流程定义
- 审批规则配置
- 审批节点管理
- 审批记录追踪
5. 配置中心
- Nacos配置管理
- 配置同步
- 版本控制
- 变更追踪
## 二、技术架构
### 2.1 技术选型
- 后端框架Spring Boot 3.2.0
- Java版本JDK 21
- ORM框架JPA + QueryDSL
- 安全框架Spring Security + JWT
- 数据库MySQL 8.0
- 缓存Redis
- 消息队列RabbitMQ
- 服务注册Nacos
### 2.2 系统架构
1. 微服务架构
- 网关服务
- 认证服务
- 工作流引擎
- 审批服务
- 配置中心
2. 分层架构
- 接口层Controller
- 业务层Service
- 数据访问层Repository
- 领域模型层Domain
3. 插件化架构
- 节点插件
- 审批插件
- 通知插件
## 三、数据库设计
### 3.1 核心表设计
{{ ... }}
### 3.2 工作流相关表
{{ ... }}
### 3.3 审批系统表
1. 审批定义表sys_approval_definition
- 基础字段id, tenant_id等
- 流程编码code
- 流程名称name
- 流程描述description
- 业务类型business_type
- 节点配置node_config
- 表单配置form_config
2. 审批流程表sys_approval_flow
- 基础字段
- 业务类型business_type
- 业务键business_key
- 模板编码template_code
- 当前节点current_node
- 流程状态status
- 流程变量variables
3. 审批节点表sys_approval_node
- 基础字段
- 流程IDflow_id
- 节点编码node_code
- 节点名称node_name
- 节点类型node_type
- 审批人类型approver_type
- 审批人列表approver_ids
- 节点状态status
- 执行时间start_time, end_time
4. 审批意见表sys_approval_comment
- 基础字段
- 流程IDflow_id
- 节点IDnode_id
- 审批人user_id
- 审批动作action
- 审批意见comment
- 附件信息attachments
## 四、审批系统设计
### 4.1 审批系统架构
1. 核心组件
- 审批引擎ApprovalEngine
- 审批规则解析器RuleParser
- 审批节点执行器NodeExecutor
- 审批事件总线EventBus
2. 扩展点
- 审批规则插件
- 审批节点类型
- 审批表单定义
- 审批通知方式
### 4.2 审批流程设计
1. 流程定义
```json
{
"nodes": [
{
"id": "start",
"type": "start",
"next": "approve1"
},
{
"id": "approve1",
"type": "approve",
"config": {
"approverType": "ROLE",
"approverIds": ["ROLE_LEADER"],
"counterSign": false
},
"next": "approve2"
},
{
"id": "approve2",
"type": "approve",
"config": {
"approverType": "USER",
"approverIds": ["user1", "user2"],
"counterSign": true
},
"next": "end"
},
{
"id": "end",
"type": "end"
}
]
}
```
2. 审批规则
```json
{
"rules": [
{
"condition": {
"field": "environment",
"operator": "equals",
"value": "PROD"
},
"template": "PROD_DEPLOY_APPROVAL"
},
{
"condition": {
"field": "changeType",
"operator": "in",
"value": ["CONFIG", "DATABASE"]
},
"template": "CHANGE_APPROVAL"
}
]
}
```
### 4.3 审批流程实现
1. 流程启动
- 规则匹配
- 创建流程实例
- 初始化节点
- 发送通知
2. 节点执行
- 权限校验
- 节点执行
- 状态更新
- 下一节点
3. 流程结束
- 结果处理
- 状态更新
- 通知相关人
### 4.4 与工作流集成
1. 工作流定义扩展
```json
{
"nodes": [
{
"id": "deploy",
"type": "deploy",
"config": {
"approval": {
"enabled": true,
"template": "DEPLOY_APPROVAL"
}
}
}
]
}
```
2. 节点执行器实现
```java
public class DeployNodeExecutor implements NodeExecutor {
@Override
public void execute(NodeInstance node) {
// 1. 检查是否需要审批
if (needApproval(node)) {
// 2. 创建审批流程
createApprovalFlow(node);
// 3. 暂停节点执行
node.suspend();
return;
}
// 4. 执行部署
executeDeploy(node);
}
}
```
## 五、系统特性
### 5.1 多租户支持
1. 数据隔离
- 租户ID字段
- 查询过滤
- 权限控制
2. 资源隔离
- 独立配置
- 独立存储
- 独立缓存
### 5.2 插件化设计
1. 节点插件
- Git操作
- Jenkins构建
- 配置同步
- 数据库变更
2. 审批插件
- 角色审批
- 用户审批
- 条件审批
- 自动审批
### 5.3 安全特性
1. 认证授权
- JWT认证
- RBAC权限
- 租户隔离
2. 数据安全
- 敏感信息加密
- 操作审计
- 数据备份
### 5.4 可观测性
1. 日志管理
- 操作日志
- 审计日志
- 性能日志
2. 监控告警
- 系统监控
- 业务监控
- 异常告警
## 六、部署架构
### 6.1 系统部署
1. 容器化部署
- Docker镜像
- K8s编排
- 服务网格
2. 高可用设计
- 多副本
- 负载均衡
- 故障转移
### 6.2 数据存储
1. 数据库
- 主从复制
- 数据备份
- 分库分表
2. 文件存储
- 分布式存储
- 文件备份
- 访问控制
## 七、后续规划
### 7.1 功能增强
1. 审批功能
- 移动端审批
- 审批委托
- 审批催办
2. 部署功能
- 灰度发布
- 回滚机制
- 批量部署
### 7.2 性能优化
1. 系统性能
- 缓存优化
- SQL优化
- 并发处理
2. 用户体验
- 响应速度
- 操作便捷
- 界面优化