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 服务目录在平台工程中的角色

在平台工程体系中,服务目录扮演着单一可信源的角色,是平台团队与业务团队之间的契约层。其核心角色可归纳为以下五个维度:

  1. 服务发现与注册:提供统一的注册入口,使平台能力可被消费团队自助发现。
  2. 所有权与责任映射:明确每个服务的 owner 团队,避免“孤儿服务”。
  3. SLO 模板绑定引擎:根据服务分类、tier 自动匹配对应的 SLO 作业模板。
  4. 依赖关系管理:记录服务间的调用链,支撑故障影响分析和容量规划。
  5. 自动化运维触发:服务目录的变更(如版本升级、下线)可触发 CI/CD 流水线或告警策略更新。
服务目录在平台工程中的核心角色 服务目录 服务发现与注册 所有权与责任映射 SLO 模板绑定引擎 依赖关系管理 自动化运维触发 服务目录是平台工程中连接平台能力与用户需求的单一可信源

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 提供基础设施视角,两者通过服务-配置项映射关联。

服务目录与 CMDB 的分层协作架构 服务目录层(业务视角) 服务 A(订单服务) 服务 B(支付服务) 服务 C(通知服务) 服务-配置项映射关系 CMDB 层(基础设施视角) CI: 服务器集群 | CI: 数据库实例 | CI: 负载均衡器 CI: 容器组 | CI: 网络策略 | CI: 存储卷 CI: 中间件实例 | CI: 证书 | CI: DNS 记录 服务目录定义“做什么”,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 配置,并自动创建对应的告警规则和监控面板。