案例素材
当前应用案例相关素材,请参考:umodel_and_codes.zip。
注意:下述是示例架构和实施方式,实际业务场景中可针对性调整和优化。
设计原则
1. 业务导向
以DevOps实际业务流程为核心,确保实体设计贴近真实场景。
支持端到端的业务流程追踪和分析。
面向问题解决,确保关键业务信息可查可用。
2. 可扩展性
实体字段设计考虑未来扩展需求。
支持不同技术栈和工具链的适配。
预留扩展字段,避免频繁的Schema变更。
3. 标准化
遵循UModel的设计规范和最佳实践。
与现有APM、K8s域保持一致的命名和结构风格。
确保字段类型和约束的合理性。
实体详细设计
1. 研发人员实体(devops.developer)
业务背景
研发人员是DevOps流程的核心参与者,承担代码开发、系统维护、问题处理等关键职责。建立研发人员实体的目的是实现责任归属的清晰化和问题处理的高效化。
字段设计
字段名称  | 类型  | 必填  | 可过滤  | 可排序  | 描述  | 业务价值  | 
work_no  | string  | 是  | 是  | 是  | 工号  | 唯一标识,与企业人员系统对接,作为主键  | 
name  | string  | 是  | 是  | 是  | 研发人员姓名  | 直观的人员识别信息  | 
string  | 是  | 是  | 是  | 邮箱地址  | 联系方式,告警通知的重要渠道  | |
team  | string  | 是  | 是  | 是  | 团队名称  | 团队维度的协作分析和管理  | 
role  | string  | 是  | 是  | 是  | 角色  | 角色职责分析,如开发、测试、运维等  | 
department  | string  | 是  | 是  | 是  | 部门  | 组织架构分析,跨部门协作追踪  | 
2. 代码仓库实体(devops.code_repository)
业务背景
代码仓库是源码管理的核心载体,记录了项目的技术实现和演进历史。通过代码仓库实体,可以实现代码资产的统一管理和服务源头的追溯。
字段设计
字段名称  | 类型  | 必填  | 可过滤  | 可排序  | 描述  | 业务价值  | 
repo_id  | string  | 是  | 是  | 是  | 仓库ID  | 唯一标识,作为主键  | 
repo_name  | string  | 是  | 是  | 是  | 仓库名称  | 仓库的业务标识,通常对应项目名  | 
repo_url  | string  | 是  | 是  | 是  | 仓库URL  | 代码访问地址,支持多种Git协议  | 
git_provider  | string  | 是  | 是  | 是  | Git提供商  | Git服务提供商,如GitLab、GitHub等  | 
language  | string  | 是  | 是  | 是  | 编程语言  | 主要编程语言,便于技术栈分析  | 
framework  | string  | 是  | 是  | 是  | 技术框架  | 使用的技术框架,如Spring、React等  | 
description  | string  | 否  | 否  | 否  | 仓库描述  | 仓库用途说明,便于理解和管理  | 
default_branch  | string  | 是  | 是  | 是  | 默认分支  | 默认分支名称,通常为main或master  | 
3. 代码发布实体(devops.code_release)
业务背景
代码发布记录了从源码到可部署制品的转换过程,是连接开发和运维的关键环节。通过发布实体,可以实现版本管理、变更追踪和回滚分析。
字段设计
字段名称  | 类型  | 必填  | 可过滤  | 可排序  | 描述  | 业务价值  | 
release_id  | string  | 是  | 是  | 是  | 发布ID  | 唯一标识,作为主键  | 
repo_id  | string  | 是  | 是  | 是  | 仓库ID  | 关联到具体的代码仓库  | 
repo_name  | string  | 是  | 是  | 是  | 仓库名称  | 仓库名称,便于直观识别  | 
tag  | string  | 是  | 是  | 是  | 发布标签  | 版本标识,支持语义化版本管理  | 
commit_sha  | string  | 是  | 是  | 是  | 提交SHA  | Git提交哈希,精确的代码变更定位  | 
release_notes  | string  | 否  | 否  | 否  | 发布说明  | 发布变更说明,详细的变更描述  | 
release_time  | timestamp  | 是  | 是  | 是  | 发布时间  | 时间维度的版本管理和分析  | 
status  | string  | 是  | 是  | 是  | 发布状态  | 发布状态,如success、failed、pending等  | 
release_type  | string  | 是  | 是  | 是  | 发布类型  | 发布类型,如major、minor、patch等  | 
author  | string  | 是  | 是  | 是  | 发布者  | 发布操作的执行人  | 
4. 镜像仓库实体(devops.image_registry)
业务背景
镜像仓库是容器镜像的集中存储和分发中心,承担着镜像安全、版本管理和访问控制的重要职责。建立镜像仓库实体有助于实现镜像资产的统一管理。
字段设计
字段名称  | 类型  | 必填  | 可过滤  | 可排序  | 描述  | 业务价值  | 
registry_id  | string  | 是  | 是  | 是  | 仓库ID  | 唯一标识,作为主键  | 
registry_name  | string  | 是  | 是  | 是  | 仓库名称  | 仓库的业务标识,便于管理识别  | 
registry_url  | string  | 是  | 是  | 是  | 仓库地址  | 镜像访问的网络地址  | 
registry_type  | string  | 是  | 是  | 是  | 仓库类型  | 仓库类别,如Harbor、ACR、ECR等  | 
provider  | string  | 是  | 是  | 是  | 仓库提供商  | 镜像仓库的服务提供商  | 
region  | string  | 是  | 是  | 是  | 区域  | 镜像仓库所在的地理区域  | 
description  | string  | 否  | 否  | 否  | 仓库描述  | 仓库用途说明,便于理解和管理  | 
is_public  | boolean  | 是  | 是  | 是  | 是否公开  | 仓库的访问权限设置  | 
5. 容器镜像实体(devops.image)
业务背景
容器镜像是应用部署的基本单元,记录了应用的完整运行环境和依赖。通过镜像实体,可以实现从代码构建到容器部署的完整追踪。
字段设计
字段名称  | 类型  | 必填  | 可过滤  | 可排序  | 描述  | 业务价值  | 
image_id  | string  | 是  | 是  | 是  | 镜像ID  | 唯一标识,作为主键  | 
image_name  | string  | 是  | 是  | 是  | 镜像名称  | 镜像的业务标识,通常对应应用名  | 
image_tag  | string  | 是  | 是  | 是  | 镜像标签  | 版本标识,支持多版本管理  | 
image_digest  | string  | 是  | 是  | 是  | 镜像摘要  | SHA256哈希值,确保镜像完整性  | 
registry_id  | string  | 是  | 是  | 是  | 仓库ID  | 关联到具体的镜像仓库  | 
full_image_name  | string  | 是  | 是  | 是  | 完整镜像名  | 包含仓库地址的完整镜像名  | 
build_time  | timestamp  | 是  | 是  | 是  | 构建时间  | 镜像构建的时间记录  | 
size  | long  | 是  | 是  | 是  | 镜像大小  | 镜像文件大小,用于存储优化分析  | 
architecture  | string  | 是  | 是  | 是  | 架构  | CPU架构,如amd64、arm64等  | 
os  | string  | 是  | 是  | 是  | 操作系统  | 基础操作系统,如linux、windows等  | 
build_status  | string  | 是  | 是  | 是  | 构建状态  | 构建状态,如success、failed、building等  | 
实体关联设计
核心关系类型
关系类型  | 语义含义  | 典型场景  | 
manages  | 管理关系  | 责任归属、权限控制  | 
sourced_from  | 来源关系  | 变更追踪、影响分析  | 
uses  | 使用关系  | 依赖分析、风险评估  | 
contains  | 包含关系  | 资源包含、版本管理  | 
关系类型选择原则
语义明确:关系类型名称清晰表达业务含义。
方向性:明确关系的方向,支持有向图分析。
一致性:在不同域间保持关系类型的一致性。
扩展性:预留扩展空间,支持新关系类型的添加。
DevOps域内部关系
研发人员管理代码仓库(devops.developer_manages_devops.code_repository)。
业务价值:
责任明确:快速定位代码仓库的负责人。
权限管理:基于管理关系进行权限分配。
工作量分析:统计研发人员管理的仓库数量和复杂度。
研发人员管理镜像仓库(devops.developer_manages_devops.image_registry)。
业务价值:
运维责任:明确镜像仓库的运维责任人。
安全管理:基于管理关系进行安全策略配置。
资源优化:支持基于负责人的资源分配优化。
3.代码发布来源代码仓库(devops.code_release_sourced_from_devops.code_repository)。
业务价值:
版本溯源:快速定位发布版本的源码位置。
变更分析:分析代码变更对发布的影响。
质量追踪:从源码质量到发布质量的端到端追踪。
4.镜像来源代码发布(devops.image_sourced_from_devops.code_release)。
业务价值:
镜像溯源:从容器镜像追溯到具体的代码变更。
安全追踪:快速定位安全漏洞的影响范围。
回滚决策:基于代码变更历史制定回滚策略。
镜像仓库包含镜像(devops.image_registry_contains_devops.image)。
业务价值:
资源定位:快速找到镜像的存储位置。
容量管理:统计各仓库的存储使用情况。
访问控制:基于存储位置进行权限管理。
跨域关系设计
与 K8s 域的集成
Pod使用镜像(k8s.pod_uses_devops.image)
Deployment使用镜像(k8s.deployment_uses_devops.image)
StatefulSet使用镜像(k8s.statefulset_uses_devops.image)
DaemonSet使用镜像(k8s.daemonset_uses_devops.image)
业务价值:
部署追踪:从K8s工作负载快速定位使用的镜像版本。
更新分析:分析镜像更新对K8s工作负载的影响。
回滚支持:基于镜像版本进行K8s工作负载回滚。
与APM域的集成
服务来源于代码仓库(apm.service_sourced_from_devops.code_repository)
服务来源于代码发布(apm.service_sourced_from_devops.code_release)
研发人员管理服务(devops.developer_manages_apm.service)
业务价值:
问题定位:从性能问题快速定位到源码位置。
团队协作:连接运维团队和开发团队的数据视图。
责任归属:明确服务问题的负责人。
告警路由:基于管理关系进行告警通知路由。