DevOps富化UModel设计

案例素材

当前应用案例相关素材,请参考:umodel-enrich-dev.zip

注意:下述是示例架构和实施方式,实际业务场景中可针对性调整和优化。

设计原则

1. 业务导向

  • DevOps实际业务流程为核心,确保实体设计贴近真实场景。

  • 支持端到端的业务流程追踪和分析。

  • 面向问题解决,确保关键业务信息可查可用。

2. 可扩展性

  • 实体字段设计考虑未来扩展需求。

  • 支持不同技术栈和工具链的适配。

  • 预留扩展字段,避免频繁的Schema变更。

3. 标准化

  • 遵循UModel的设计规范和最佳实践。

  • 与现有APM、K8s域保持一致的命名和结构风格。

  • 确保字段类型和约束的合理性。

实体详细设计

1. 研发人员实体(devops.developer)

业务背景

研发人员是DevOps流程的核心参与者,承担代码开发、系统维护、问题处理等关键职责。建立研发人员实体的目的是实现责任归属的清晰化和问题处理的高效化。

字段设计

字段名称

类型

必填

可过滤

可排序

描述

业务价值

work_no

string

工号

唯一标识,与企业人员系统对接,作为主键

name

string

研发人员姓名

直观的人员识别信息

email

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

默认分支

默认分支名称,通常为mainmaster

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域内部关系

  1. 研发人员管理代码仓库(devops.developer_manages_devops.code_repository)。

业务价值

  • 责任明确:快速定位代码仓库的负责人。

  • 权限管理:基于管理关系进行权限分配。

  • 工作量分析:统计研发人员管理的仓库数量和复杂度。

  1. 研发人员管理镜像仓库(devops.developer_manages_devops.image_registry)。

业务价值

  • 运维责任:明确镜像仓库的运维责任人。

  • 安全管理:基于管理关系进行安全策略配置。

  • 资源优化:支持基于负责人的资源分配优化。

3.代码发布来源代码仓库(devops.code_release_sourced_from_devops.code_repository)。

业务价值

  • 版本溯源:快速定位发布版本的源码位置。

  • 变更分析:分析代码变更对发布的影响。

  • 质量追踪:从源码质量到发布质量的端到端追踪。

4.镜像来源代码发布(devops.image_sourced_from_devops.code_release)。

业务价值

  • 镜像溯源:从容器镜像追溯到具体的代码变更。

  • 安全追踪:快速定位安全漏洞的影响范围。

  • 回滚决策:基于代码变更历史制定回滚策略。

  1. 镜像仓库包含镜像(devops.image_registry_contains_devops.image)。

业务价值

  • 资源定位:快速找到镜像的存储位置。

  • 容量管理:统计各仓库的存储使用情况。

  • 访问控制:基于存储位置进行权限管理。

跨域关系设计

与 K8s 域的集成

  1. Pod使用镜像(k8s.pod_uses_devops.image)

  2. Deployment使用镜像(k8s.deployment_uses_devops.image)

  3. StatefulSet使用镜像(k8s.statefulset_uses_devops.image)

  4. DaemonSet使用镜像(k8s.daemonset_uses_devops.image)

业务价值

  • 部署追踪:从K8s工作负载快速定位使用的镜像版本。

  • 更新分析:分析镜像更新对K8s工作负载的影响。

  • 回滚支持:基于镜像版本进行K8s工作负载回滚。

APM域的集成

  1. 服务来源于代码仓库(apm.service_sourced_from_devops.code_repository)

  2. 服务来源于代码发布(apm.service_sourced_from_devops.code_release)

  3. 研发人员管理服务(devops.developer_manages_apm.service)

业务价值

  • 问题定位:从性能问题快速定位到源码位置。

  • 团队协作:连接运维团队和开发团队的数据视图。

  • 责任归属:明确服务问题的负责人。

  • 告警路由:基于管理关系进行告警通知路由。