2. 自助目录概念

2.1 什么是自助服务目录

自助服务目录(Self-Service Catalog)是平台工程中面向开发者的统一入口,它将底层基础设施、中间件、运行时环境、安全策略等平台能力封装为“产品化”的服务项,开发者无需理解底层实现细节,即可通过图形化界面或 API 按需申请、配置和使用平台资源。

从本质上讲,自助目录是平台团队与开发者之间的契约层:平台团队定义“能提供什么”,开发者选择“需要什么”,整个过程由平台引擎自动编排交付。

核心特征: 服务目录 ≠ 资源列表。资源列表只展示“有什么”,服务目录还包含申请流程、参数模板、配额校验、自动交付和生命周期治理。

2.2 自助目录在平台工程中的定位

在平台工程的四层架构中,自助目录位于用户体验层与编排层之间,是连接开发者与平台能力的桥梁。下表展示了各层职责与目录的定位:

架构层 职责 与自助目录的关系
用户体验层 提供开发者门户、CLI、API 目录是门户的核心内容载体
自助目录层 服务定义、参数模板、审批流 本层——平台能力的“产品化”封装
编排引擎层 Terraform/Crossplane/Helm 执行 目录触发编排流水线
基础设施层 计算、网络、存储、K8s 目录交付的目标环境

平台工程强调“开发者体验优先”,自助目录正是这一理念的落地载体——它将平台能力从“文档驱动”转变为“目录驱动”,开发者只需在目录中搜索、选择、填写参数,即可获得标准化的服务实例。

自助目录在平台工程中的定位 用户体验层 开发者门户 · CLI · API · 可视化仪表盘 自助目录层(本层) 服务定义 · 参数模板 · 审批流 · 配额校验 编排引擎层 Terraform · Crossplane · Helm · 流水线 基础设施层 计算 · 网络 · 存储 · Kubernetes

2.3 自助目录的核心能力

一个成熟的自助目录需要覆盖四个关键阶段:发现 → 请求 → 交付 → 治理。这四个阶段构成了服务从“可见”到“可用”再到“可管”的完整闭环。

阶段 核心能力 关键产出
发现 服务分类、全文搜索、标签过滤、服务详情预览 开发者快速找到所需服务
请求 参数表单、配额校验、审批流、依赖选择 标准化的服务申请单
交付 自动编排、环境创建、配置注入、状态通知 可用的服务实例
治理 成本归属、生命周期管理、版本升级、回收 可审计的服务台账

2.3.1 发现——让服务“找得到”

发现能力是自助目录的入口。开发者需要像逛应用商店一样浏览和搜索服务。平台团队应提供:

  • 分类体系: 按用途(数据库、消息队列、CI/CD)、按环境(开发、测试、生产)、按团队(前端、后端、数据)等多维度组织。
  • 全文搜索: 支持服务名称、描述、标签的模糊匹配。
  • 服务详情: 每个服务项包含描述、版本、SLA、费用归属、使用文档链接。
最佳实践: 在目录中为每个服务添加“使用热度”或“推荐”标签,帮助开发者快速识别常用服务,减少选择成本。

2.3.2 请求——让申请“填得对”

请求阶段将开发者的需求转化为结构化的参数。平台团队需要设计:

  • 参数模板: 使用 JSON Schema 或 OpenAPI 规范定义每个服务的输入参数,包括必填项、默认值、取值范围。
  • 配额校验: 在提交前检查开发者是否还有剩余配额(如 CPU 核数、存储容量、数据库实例数)。
  • 审批流: 支持自动审批(配额内)、人工审批(超配额或生产环境)、多级审批(涉及安全合规)。
// 参数模板示例(JSON Schema)
{
  "service": "postgresql-14",
  "parameters": {
    "instance_name": { "type": "string", "minLength": 3, "maxLength": 32 },
    "cpu": { "type": "integer", "enum": [1, 2, 4, 8], "default": 2 },
    "memory_gb": { "type": "integer", "enum": [2, 4, 8, 16], "default": 4 },
    "storage_gb": { "type": "integer", "minimum": 10, "maximum": 500, "default": 50 },
    "environment": { "type": "string", "enum": ["dev", "staging", "prod"] }
  }
}

2.3.3 交付——让服务“开得快”

交付是自助目录的价值兑现环节。平台引擎接收到请求后,自动执行编排流水线:

  • 基础设施即代码: 调用 Terraform/Crossplane 模块创建云资源或 K8s 命名空间。
  • 配置注入: 自动生成连接字符串、密钥、环境变量,并注入到开发者的项目空间。
  • 状态通知: 通过 Webhook、邮件或即时通讯工具通知开发者服务已就绪。
常见陷阱: 交付阶段最容易出现“部分成功”状态(如网络创建成功但数据库初始化失败)。目录必须支持幂等重试和回滚机制,确保最终一致性。

2.3.4 治理——让资产“管得住”

治理能力决定了自助目录能否长期健康运行。平台团队需要关注:

  • 成本归属: 每个服务实例关联到项目/团队/成本中心,支持按月度生成账单。
  • 生命周期管理: 自动检测闲置资源,发送回收提醒;支持开发者自助销毁或延期。
  • 版本升级: 当服务模板更新时,目录应提示现有实例是否可原地升级,并提供升级窗口。
自助目录核心能力闭环 发现 分类·搜索·预览 请求 表单·校验·审批 交付 编排·创建·通知 治理 成本·回收 反馈闭环:治理数据优化目录服务定义 四个阶段形成“发现→请求→交付→治理→优化发现”的持续改进循环 治理阶段产生的成本和使用数据,反向驱动目录服务的版本迭代和废弃

2.4 自助目录的成熟度模型

不同组织的平台工程实践阶段不同,自助目录的成熟度也呈现阶梯式演进:

成熟度等级 发现 请求 交付 治理
L1:静态目录 Wiki 页面列表 邮件或工单申请 手动创建 无
L2:半自动化 门户展示服务 表单 + 自动审批 脚本半自动 手动记账
L3:全自动化 搜索 + 标签 + 推荐 参数校验 + 配额检查 IaC 全自动交付 成本自动归集
L4:智能目录 AI 推荐 + 使用分析 智能默认值 + 预审批 自适应编排 + 金丝雀 生命周期自动管理
建议: 大多数团队应从 L2 起步,优先实现“请求→交付”的自动化闭环,再逐步完善发现和治理能力。不要试图一次性达到 L4,那会导致平台团队负担过重。