3、服务目录的定义与作用

3.1 什么是服务目录

服务目录(Service Catalog)是平台工程中一份权威、结构化、可查询的软件服务清单。它记录了组织内每个服务的关键元数据,包括服务名称、所属团队、技术栈、API 端点、依赖关系、部署环境、SLO 目标以及联系人信息。

在 DORA 度量体系落地过程中,服务目录是连接原始数据采集与指标聚合分析的核心纽带。没有服务目录,DORA 指标(如部署频率、变更前置时间、变更失败率、恢复服务时间)将无法按服务维度进行准确归因和趋势分析。

核心定义:服务目录 = 服务元数据仓库 + 运行时状态视图 + 团队所有权映射。它不是静态的 Excel 表格,而是与 CI/CD 流水线、监控系统、事件管理平台实时同步的活数据源。

3.2 服务目录在平台工程中的定位

平台工程的核心目标是构建内部开发者平台(IDP),而服务目录是 IDP 的数据底座。它在平台工程中承担以下四个关键角色:

角色 说明 典型场景
发现层 提供组织级服务全景图,开发者可快速查找服务、API 文档和负责人 新成员入职、跨团队协作、故障升级
治理层 定义服务生命周期标准(创建、注册、废弃),强制执行命名规范和技术栈合规 服务注册审批、技术债追踪、版本管理
度量层 作为 DORA 指标计算的维度标签,支持按团队、服务、环境进行指标下钻 部署频率报表、变更失败率归因、SLO 达成率
自动化层 触发 CI/CD 流水线、自动生成监控仪表盘、动态更新 CMDB 和配置管理 新服务自动接入监控、依赖变更通知

下图展示了服务目录在平台工程架构中的核心位置:

服务目录在平台工程中的定位 开发者门户(Developer Portal) 服务目录(Service Catalog) 元数据仓库 · 所有权映射 · 运行时状态 发现与治理 服务注册 · 合规检查 DORA 度量 指标聚合 · 趋势分析 自动化集成 流水线触发 · 监控同步 基础设施与工具链 CI/CD · 监控 · 日志 · 告警 · 容器编排 · 配置管理 服务目录是平台工程的数据中枢,向上支撑开发者门户,向下对接基础设施与工具链

3.3 服务目录与 CMDB 的区别

很多团队容易将服务目录与传统的配置管理数据库(CMDB)混为一谈。虽然两者都管理资产信息,但在设计理念、数据模型和使用场景上存在本质差异。

对比维度 服务目录(Service Catalog) CMDB(配置管理数据库)
核心对象 软件服务(微服务、API、应用) 配置项(CI):服务器、网络设备、中间件、应用实例
数据粒度 服务级元数据(团队、SLO、依赖、API) 实例级属性(IP、CPU、内存、版本、补丁)
更新频率 持续同步(分钟级/事件驱动) 定期扫描(小时级/天级)
消费方 开发者、SRE、平台工程师、管理者 运维工程师、IT 审计、资产管理
核心用途 服务发现、DORA 度量、自动化编排、团队协作 资产盘点、合规审计、故障影响分析、变更管理
数据模型 扁平化 + 标签化(灵活扩展) 层次化 + 关系型(严格建模)
生命周期 服务创建 → 运行 → 废弃(软件视角) CI 采购 → 部署 → 退役(硬件视角)
实践建议:服务目录和 CMDB 不是二选一的关系。在大型组织中,服务目录通常作为 CMDB 的上层抽象,服务目录中的每个服务可以关联到 CMDB 中的多个配置项(如服务器、数据库实例)。两者通过服务 ID 或标签进行关联,形成完整的资产视图。

下图直观对比了服务目录与 CMDB 在数据模型和消费场景上的差异:

服务目录 vs CMDB:数据模型与消费场景对比 服务目录 订单服务 支付服务 用户服务 通知服务 元数据示例 团队: 交易组 | SLO: 99.95% | 语言: Go 依赖: 支付服务 | API: /api/v1/orders 消费方:开发者 · SRE · 平台工程师 DORA 度量 · 服务发现 · 自动化编排 CMDB 服务器 A 服务器 B 数据库实例 负载均衡器 属性示例 IP: 10.0.1.5 | CPU: 8核 | 内存: 32GB OS: Ubuntu 22.04 | 补丁: 2024-09 消费方:运维工程师 · IT 审计 资产盘点 · 合规审计 · 故障影响分析

3.4 服务目录的核心元数据模型

一个工程化落地的服务目录,至少需要包含以下元数据字段。这些字段直接支撑 DORA 指标的准确计算和团队协作效率的提升。

分类 字段 说明 DORA 关联
基础信息 服务 ID 全局唯一标识符(如 UUID 或 团队名-服务名) 指标聚合键
服务名称 人类可读的服务名称 报表展示
服务类型 微服务、批处理、前端、数据管道等 指标分类过滤
所有权 所属团队 负责该服务的团队名称 团队级 DORA 聚合
联系人 On-call 人员或 Slack/钉钉群组 故障响应
技术栈 编程语言 Go、Java、Python、Node.js 等 变更前置时间分析
部署方式 Kubernetes、ECS、VM、Serverless 部署频率归因
运行时 环境列表 dev、staging、prod 等 环境级指标下钻
SLO 目标 可用性、延迟、错误率目标值 变更失败率评估
依赖关系 上游/下游依赖 所依赖的其他服务或基础设施 故障影响范围分析
常见陷阱:服务目录的元数据字段不宜过多。建议从 10-15 个核心字段起步,后续根据团队需求逐步扩展。字段过多会导致维护成本激增,最终沦为无人更新的死数据。优先保证服务 ID、所属团队、部署方式和环境列表这四个字段的准确性和实时性,它们是 DORA 指标计算的基础。