概述
在 DevOps 全流程打通方案中,实体建模是整个数据架构的核心基础。本文档详细介绍各个实体的建模思路、字段设计原则和最佳实践,帮助理解如何在UModel 中构建完整的 DevOps 数据模型。
注意:下述是示例架构和实施方式,实际业务场景中可针对性调整和优化。
案例素材
当前应用案例相关素材,请参考:umodel-full-devops.zip
建模原则
1. 域分离原则
组织域(organization):聚焦于研发组织结构、代码管理、AI工具使用等开发态数据。
运维域(ops):聚焦于基础设施、服务部署、运行时状态等运维态数据。
跨域关联:通过EntitySetLink实现域间数据的有机连接。
2. 语义化设计
字段命名:使用业务语义明确的字段名称,避免技术术语。
多语言支持:提供中英文描述,增强可读性。
类型规范:严格定义字段类型,确保数据一致性。
3. 可扩展性
预留扩展:考虑未来业务发展需要,预留扩展字段。
动态支持:支持动态字段添加,适应业务变化。
版本管理:通过schema版本控制实现平滑升级。
组织域实体设计
1. 研发人员(organization.developer)
业务意义
研发人员实体是DevOps流程的核心参与者,承载了人员组织结构、岗位信息、管理关系等关键数据,是连接代码贡献和服务归属的重要桥梁。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 工号(主键) | 使用工号作为唯一标识,确保人员身份的准确性 |
| string | 显示名称 | 用于UI展示的友好名称,支持中文显示 |
| string | 部门名称 | 支持组织维度的效能分析和管理 |
| string | 岗位名称 | 用于分析不同岗位的工作特点和效能 |
| string | 主管工号 | 构建组织层级关系的关键字段 |
| string | 主管名称 | 提供主管信息的友好显示 |
2. 代码仓库(organization.code_repo)
业务意义
代码仓库实体代表了软件项目的源代码管理单元,是代码变更追踪、版本管理和发布溯源的基础。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| integer | 项目ID(主键) | 使用整数ID确保唯一性和查询效率 |
| string | 项目路径 | 提供人类可读的项目标识,如"group/project" |
| string | 项目URL | 支持直接跳转到代码仓库页面 |
3. 代码发布(organization.code_release)
业务意义
代码发布实体记录了从代码到可部署版本的转换过程,是连接开发活动和运维部署的关键节点。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 构建ID | CI/CD系统生成的唯一构建标识 |
| string | 提交ID | Git提交的SHA值,确保代码版本追溯 |
| integer | 仓库ID | 关联到具体的代码仓库 |
| string | 仓库名称 | 提供仓库的友好显示名称 |
| string | 发布标题 | 发布版本的人类可读标识 |
| string | 发布说明 | 详细的发布变更说明,不支持过滤排序 |
4. AI工具(organization.ai_tool)
业务意义
AI工具实体是DevOps流程中的新兴元素,用于统计和分析AI技术对研发效能的提升效果。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 工具名称(主键) | 简洁明确的工具标识,如"Claude"、“Copilot” |
运维域实体设计
1. 集群(ops.cluster)
业务意义
集群实体代表了基础设施的顶层组织单元,承载了区域、业务、管理等多维度的基础设施信息。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 集群名称(主键) | 集群的唯一标识符 |
| string | 区域代码 | 技术层面的区域标识 |
| string | 区域显示名称 | 用户友好的区域名称 |
| string | 可用区/应用名 | 业务维度的分区信息 |
| string | 所属业务 | 业务线归属信息 |
2. 主机(ops.host)
业务意义
主机实体代表了基础设施的基本计算单元,是服务运行的物理载体。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 主机名(主键) | 主机的唯一标识符 |
| string | IP地址 | 网络访问地址,支持过滤查询 |
| string | 所属集群 | 与集群实体的关联字段 |
| string | 可用区 | 物理位置信息 |
3. 服务角色(ops.server_role)
业务意义
服务角色实体是运维管理的核心概念,代表了具有特定功能的服务单元,连接了服务定义和实际部署。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 服务角色别名(主键) | 业务层面的服务标识 |
| string | 服务角色名 | 技术层面的角色定义 |
| string | 所属集群 | 部署位置信息 |
| string | 区域信息 | 地理位置信息 |
| string | 角色类型 | 服务类型分类 |
| string | 模板MD5 | 配置版本校验 |
| string | 版本提交信息 | 版本变更说明 |
| time | 版本修改时间 | 版本时间戳 |
4. 服务模板(ops.service_template)
业务意义
服务模板实体定义了服务的标准化配置模板,是服务标准化和复用的基础。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 模板名称(主键) | 模板的唯一标识 |
| string | 所属分组 | 模板的分类组织 |
| string | 模板描述 | 详细的功能说明 |
| string | 模板类型 | 模板的类别分类 |
| string | 最后修改人 | 变更责任人信息 |
| timestamp | 修改时间 | 变更时间记录 |
5. 服务版本(ops.service_version)
业务意义
服务版本实体记录了服务的具体版本信息,是连接服务模板和代码发布的桥梁。
字段设计分析
字段名 | 类型 | 业务意义 | 设计考量 |
| string | 模板名称 | 关联到服务模板 |
| string | 版本MD5校验码 | 版本唯一性保证 |
| string | 提交ID | 关联到代码提交 |
| string | 提交信息 | 版本变更说明 |
| timestamp | 提交时间 | 版本创建时间 |
| string | 审核状态 | 版本审核流程状态 |