4. 服务目录概述
服务目录是平台工程中连接平台能力与用户需求的核心元数据层。它并非简单的资产清单,而是一份以服务为中心、描述服务生命周期、依赖关系、所有权和运行态承诺的权威记录。在 SLO 作业模板与服务目录集成实践中,服务目录是模板的数据底座和路由引擎。
4.1 服务目录的定义
服务目录是一个结构化、可查询、可编程的元数据仓库,用于注册、发现和管理组织内所有平台服务(包括基础设施服务、中间件服务、业务服务)。每个服务条目通常包含以下核心属性:
| 属性类别 | 典型字段 | 说明 |
|---|---|---|
| 标识 | service_id, name, version | 全局唯一服务标识 |
| 所有权 | team, owner, slack_channel | 明确责任团队与联系方式 |
| 分类 | tier, type, domain | 服务等级、类型、业务域 |
| 依赖 | depends_on, provides | 上下游依赖关系 |
| 运行态 | slos, alerts, dashboards | SLO 模板引用、告警规则、监控面板 |
| 接口 | endpoints, apis, ports | 服务暴露的访问入口 |
实践要点:服务目录中的每个服务条目都应有一个唯一且稳定的 service_id,该 ID 将作为 SLO 作业模板中
service_selector 的匹配键,实现模板与服务的动态绑定。
4.2 服务目录在平台工程中的角色
在平台工程体系中,服务目录扮演着单一可信源的角色,是平台团队与业务团队之间的契约层。其核心角色可归纳为以下五个维度:
- 服务发现与注册:提供统一的注册入口,使平台能力可被消费团队自助发现。
- 所有权与责任映射:明确每个服务的 owner 团队,避免“孤儿服务”。
- SLO 模板绑定引擎:根据服务分类、tier 自动匹配对应的 SLO 作业模板。
- 依赖关系管理:记录服务间的调用链,支撑故障影响分析和容量规划。
- 自动化运维触发:服务目录的变更(如版本升级、下线)可触发 CI/CD 流水线或告警策略更新。
4.3 服务目录与 CMDB 的区别
许多团队容易将服务目录与传统的 CMDB(配置管理数据库)混淆。虽然两者都管理配置数据,但在设计理念、数据模型、使用场景上存在本质差异。下表从多个维度进行对比:
| 对比维度 | 服务目录 | CMDB |
|---|---|---|
| 核心对象 | 服务(Service) | 配置项(CI) |
| 抽象层次 | 逻辑层(业务能力) | 物理/逻辑层(组件实例) |
| 数据粒度 | 粗粒度(一个服务可能包含多个 CI) | 细粒度(服务器、数据库、网络设备) |
| 消费对象 | 开发者、平台用户、SRE | 运维人员、变更管理、审计 |
| 变更驱动 | 服务生命周期事件(上线、下线、升级) | 基础设施变更(配置修改、补丁) |
| 与 SLO 的关系 | 直接绑定 SLO 模板,定义服务等级 | 间接关联,需额外映射 |
| 典型工具 | Backstage, ServiceNow Service Catalog, OpsLevel | ServiceNow CMDB, BMC Helix, iTop |
常见误区:不要试图用 CMDB 替代服务目录。CMDB 的细粒度 CI 模型会导致 SLO 模板绑定过于复杂;服务目录的粗粒度服务模型更适合定义面向用户承诺的 SLO。实践中,两者应互补共存:服务目录作为上层抽象,CMDB 作为底层实现细节的存储。
4.4 服务目录与 CMDB 的协作关系
在成熟的平台工程实践中,服务目录与 CMDB 并非对立,而是形成分层协作的架构。服务目录提供业务视角,CMDB 提供基础设施视角,两者通过服务-配置项映射关联。
4.5 服务目录在 SLO 模板集成中的关键作用
在本课程的核心场景——SLO 作业模板与服务目录集成中,服务目录承担以下关键职责:
- 模板选择器:根据服务目录中的
tier、type字段自动匹配对应的 SLO 作业模板。 - 参数注入源:从服务目录读取
owner、slack_channel、endpoints等字段,注入到 SLO 作业模板的变量中。 - 依赖图提供者:为 SLO 作业提供服务的上下游依赖关系,用于计算复合 SLO 或错误预算传播。
- 变更事件触发器:当服务目录中的服务状态变更(如新增、退役)时,自动触发 SLO 作业模板的创建或清理。
集成示例:当一个新服务在服务目录中注册,且其
tier: "critical"、type: "http-api" 时,平台会自动匹配 critical-http-api-slo-template 作业模板,生成包含 99.99% 可用性目标、p99 < 200ms 延迟目标的 SLO 配置,并自动创建对应的告警规则和监控面板。