3. 平台门户概述:Backstage、Port、Humanitec 等门户的功能、开发者自助服务与基础设施编排
平台门户是平台工程落地的核心交互界面,它将底层基础设施的复杂性抽象为开发者可理解的自助服务目录。本章聚焦三类主流门户——Backstage(开源)、Port(SaaS 优先)和 Humanitec(编排引擎型),分析它们在功能定位、自助服务模型与基础设施编排上的差异。
3.1 平台门户的核心能力模型
无论采用哪种门户,其核心价值都围绕三个维度展开:
| 能力维度 | 说明 | 典型用户 |
|---|---|---|
| 服务目录 | 统一展示所有微服务、资源、API 及其元数据、依赖关系、健康状态 | 开发者、SRE |
| 自助服务动作 | 允许开发者通过 UI/CLI 一键创建环境、部署服务、申请数据库、配置 DNS | 开发者 |
| 基础设施编排 | 将自助动作映射为 IaC 模板、Helm Chart、Terraform 模块或内部 API 调用 | 平台工程师 |
| 治理与合规 | 内置审批流、成本标签、安全策略、配额管理 | 平台工程师、安全团队 |
关键认知: 门户不是简单的 UI 皮肤,而是"开发者意图"到"基础设施状态"的转换层。门户的编排能力决定了 GitOps 同步窗口的复杂度和可观测性。
3.2 主流门户对比
3.2.1 Backstage — 开源可扩展的开发者门户
Backstage 由 Spotify 开源,CNCF 孵化项目。其核心是插件架构,平台团队通过编写或配置插件来扩展功能。
- 服务目录: 基于
catalog-info.yaml文件注册实体(服务、API、资源、域),支持多后端存储(PostgreSQL、SQLite)。 - 自助服务: 通过 Scaffolder 插件实现"软件模板",开发者选择模板(如"创建 Node.js 微服务"),填写参数,触发后端模板引擎生成代码仓库 + CI/CD 配置。
- 编排方式: 模板内部可调用 Terraform、Pulumi、Helm 或自定义 Action。编排结果通常提交到 Git 仓库,由 GitOps 工具同步。
- 适用场景: 需要高度定制、已有 Kubernetes 和 GitOps 基础、愿意投入开发资源的团队。
# catalog-info.yaml 示例
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payment-service
annotations:
backstage.io/kubernetes-id: payment-service
github.com/project-slug: org/payment-service
spec:
type: service
lifecycle: production
owner: team-payment
system: payment-system
3.2.2 Port — SaaS 优先、低代码的门户
Port 强调"开发者自助服务即代码",通过 YAML 配置定义蓝图(Blueprint)和自助动作,无需编写后端插件。
- 服务目录: 基于"蓝图"模型定义实体类型(微服务、环境、集群、数据库),支持从 Kubernetes、PagerDuty、Datadog 等自动同步数据。
- 自助服务: 使用
port-action定义动作,动作可触发 GitHub Actions、Jenkins、Argo Workflows 或自定义 Webhook。 - 编排方式: 动作执行器在外部运行,Port 负责传递参数和展示结果。编排结果通过 GitOps 仓库或直接 API 写入基础设施。
- 适用场景: 希望快速上线、团队规模较小、不想维护门户基础设施的团队。
3.2.3 Humanitec — 以编排引擎为核心的门户
Humanitec 定位为"内部开发者平台(IDP)的编排引擎",其门户层与编排层深度绑定。
- 服务目录: 以"应用"和"环境"为核心,自动解析依赖关系(如服务 A 依赖 PostgreSQL 和 Redis)。
- 自助服务: 开发者通过"Score"文件(一种与平台无关的工作负载规范)声明资源需求,Humanitec 自动解析并生成 Helm Chart 或 Terraform 配置。
- 编排方式: 内置资源匹配引擎,将声明式需求("需要 PostgreSQL 12,高可用")映射到具体资源实例("使用 RDS 实例 xxx")。编排结果直接驱动 GitOps 仓库更新。
- 适用场景: 需要精细化资源编排、多环境管理、希望降低 IaC 编写复杂度的团队。
编排深度对比: Backstage 的编排在模板 Action 层,Port 的编排在外部执行器,Humanitec 的编排在内置资源引擎。对于需要"自动解析依赖并生成完整部署清单"的场景,Humanitec 的编排粒度最细。
3.3 开发者自助服务流程对比
以下 SVG 展示了三种门户在"开发者请求新环境"这一典型自助服务动作中的流程差异:
3.4 基础设施编排架构
平台门户的基础设施编排层通常采用"声明式需求 → 资源解析 → 清单生成 → GitOps 同步"的管道模式。以下 SVG 展示了通用编排架构:
3.5 选择建议
| 评估维度 | Backstage | Port | Humanitec |
|---|---|---|---|
| 定制程度 | 极高(插件开发) | 中(YAML 配置) | 中(Score 文件 + 资源定义) |
| 上手速度 | 慢(需搭建基础设施) | 快(SaaS) | 中(需配置资源蓝图) |
| 编排深度 | 中(模板 Action) | 中(外部执行器) | 高(内置资源引擎) |
| GitOps 集成 | 通过模板生成清单 | 通过执行器更新仓库 | 直接推送完整清单 |
| 推荐团队规模 | 50+ 人,有平台团队 | 10-50 人,快速验证 | 20-100 人,复杂环境 |
注意: 门户选择不是一次性决策。许多团队从 Port 或 Backstage 起步,随着编排复杂度增加,逐步引入 Humanitec 作为编排引擎层,同时保留 Backstage 作为服务目录 UI。这种"组合式门户"架构在大型企业中越来越常见。