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

6.6 KiB
Raw Blame History

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. 流程定义

    {
      "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. 审批规则

    {
      "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. 工作流定义扩展

    {
      "nodes": [
        {
          "id": "deploy",
          "type": "deploy",
          "config": {
            "approval": {
              "enabled": true,
              "template": "DEPLOY_APPROVAL"
            }
          }
        }
      ]
    }
    
  2. 节点执行器实现

    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. 用户体验

    • 响应速度
    • 操作便捷
    • 界面优化