2. 服务目录基础:什么是服务目录、服务目录的核心要素、服务目录在组织中的价值

在实施 SLO 驱动的自动化发布策略之前,团队必须首先回答一个根本问题:我们到底在管理哪些服务? 服务目录(Service Catalog)正是回答这一问题的核心基础设施。它不仅是服务的“黄页”,更是平台工程中所有自动化决策的单一可信源。

2.1 什么是服务目录

服务目录是一个集中式、权威性的元数据存储库,用于记录组织中所有可观测、可运维的软件服务的定义、属性、依赖关系及生命周期状态。它不同于 CMDB(配置管理数据库)或资产清单,其核心关注点是服务的行为与契约,而非物理或虚拟基础设施。

关键定义: 服务目录 = 服务的“数字孪生”元数据层。它让平台能够回答“这个服务是谁的?它的 SLO 是什么?它依赖哪些下游?它当前处于什么阶段?”

一个成熟的服务目录通常由平台工程团队维护,并通过 API 或 GitOps 流程自动同步,确保元数据与实际运行状态保持一致。

服务目录在平台工程中的定位 服务目录 单一可信源 代码仓库 service.yaml / 注解 可观测平台 SLO / 错误预算 CI/CD 流水线 部署频率 / 版本 发布策略引擎 自动化门禁 开发者门户 自助服务 告警 & 仪表盘 上下文关联 服务目录从多个数据源摄取信息,并为下游自动化系统提供标准化的服务上下文

2.2 服务目录的核心要素

一个可用的服务目录必须包含以下六个核心要素。缺少任何一项,都会导致自动化策略无法准确执行。

核心要素 描述 示例值 对发布策略的影响
服务标识 全局唯一的服务名称或 ID,通常与代码仓库、DNS 名称对应 payment-gateway 作为所有自动化操作的锚点
所有者 负责该服务的团队或个人(PagerDuty 轮值组) team:fintech 决定审批链和告警通知路径
SLO 定义 服务等级目标,包括指标类型、目标值、时间窗口 latency_p99: 200ms / 30d 直接驱动部署频率门禁
依赖关系 上游调用方与下游依赖服务列表 depends_on: [auth-svc, db-cluster] 级联发布与回滚策略
生命周期阶段 服务当前所处的状态:开发、生产、废弃等 production 决定是否允许自动部署
部署元数据 部署方式、流水线 ID、当前版本、金丝雀配置 deploy_strategy: canary 控制发布流程的具体执行
实践建议: 使用 service.yaml 文件将服务目录定义存储在代码仓库中,与基础设施即代码(IaC)保持同步。这是实现 GitOps 式服务目录管理的基础。

2.3 服务目录在组织中的价值

服务目录的价值远不止于“记录”。在 SLO 驱动的发布策略上下文中,它提供了三个关键价值维度:可见性、自动化基础、治理与合规。

2.3.1 可见性:消除组织盲区

  • 服务拓扑图: 自动生成服务依赖关系图,帮助团队理解变更影响范围。
  • 所有权清晰: 任何服务都有明确的责任团队,消除“孤儿服务”。
  • SLO 状态一览: 将 SLO 燃烧速率与具体服务绑定,快速定位问题域。

2.3.2 自动化基础:从手动到自动

  • 门禁系统: 发布流水线在部署前查询服务目录,获取当前 SLO 状态,决定是否放行。
  • 自助服务: 开发者通过服务目录申请新服务,平台自动生成 CI/CD 流水线、监控仪表盘和告警规则。
  • 动态配置: 服务目录中的元数据驱动配置管理,减少硬编码。

2.3.3 治理与合规:规模化安全

  • 生命周期管理: 自动阻止对已废弃服务的部署操作。
  • 审计追踪: 所有对服务目录的变更都有记录,满足合规要求。
  • 策略执行: 基于服务标签(如 criticality: P0)执行差异化的发布策略。
服务目录的三大价值维度 服务目录 元数据核心 可见性 服务拓扑 · 所有权 · SLO 状态 自动化基础 门禁 · 自助服务 · 动态配置 治理与合规 生命周期 · 审计 · 策略执行 服务目录将原始数据转化为可执行的自动化策略

2.4 服务目录与 SLO 驱动部署的关系

在本课程后续章节中,服务目录将作为发布策略引擎的“大脑”。每次部署请求触发时,引擎会执行以下查询流程:

  1. 查询服务目录,获取目标服务的 SLO 定义、当前错误预算消耗率、依赖关系。
  2. 评估门禁条件:如果错误预算充足且依赖服务状态正常,允许部署;否则阻塞或降级。
  3. 记录审计日志:将本次部署决策写回服务目录,形成可追溯的变更历史。
常见陷阱: 不要将服务目录视为静态文档。如果服务目录中的 SLO 定义与实际可观测平台中的指标不一致,自动化门禁将产生误判。必须建立定期的元数据一致性校验机制。

通过本章的学习,你应该理解:服务目录不是可选项,而是 SLO 驱动自动化发布策略的前提条件。没有准确、完整的服务目录,任何自动化门禁都将是空中楼阁。