2. Backstage 平台基础:Backstage 是什么、核心概念与开发者门户的价值
在开始压测模板自助接入之前,必须先理解 Backstage 平台本身。Backstage 是 Spotify 开源的一个开发者门户平台,它通过统一的抽象层,将微服务、基础设施、文档、CI/CD 等工具链整合到一个标准化的前端界面中。对于压测场景,Backstage 提供了“模板即入口”的能力,让开发团队无需登录多个系统即可完成压测任务的创建与配置。
2.1 Backstage 是什么
Backstage 本质上是一个开发者门户(Developer Portal),它解决了微服务架构下工具碎片化、信息分散、 onboarding 成本高的痛点。其核心设计理念是:
- 统一入口:所有服务、资源、文档、流程都通过一个 Web 界面访问。
- 标准化建模:使用统一的实体模型(Entity)描述所有软件组件。
- 插件化扩展:通过插件机制集成第三方工具或内部系统。
关键认知: Backstage 不是 CI/CD 工具,也不是监控系统,而是一个“元平台”——它本身不执行压测,但通过模板和插件,让压测流程的发起、参数配置、结果查看变得标准化和自助化。
2.2 三大核心概念
要使用 Backstage 进行压测模板接入,必须掌握以下三个核心概念:Entity(实体)、Catalog(目录)、Plugin(插件)。它们之间的关系如下图所示:
2.3 核心概念详解
2.3.1 Entity(实体)
Entity 是 Backstage 中最基本的建模单元,使用 YAML 格式的 catalog-info.yaml 文件定义。一个 Entity 包含 kind(类型)、metadata(元数据)、spec(规格)等字段。常见的 Entity 类型包括:
| Kind(类型) | 用途 | 压测场景示例 |
|---|---|---|
| Component | 描述一个软件组件(微服务、库、应用) | 压测目标服务(如 order-service) |
| API | 描述一个 API 接口 | 压测接口定义(如 /api/v1/checkout) |
| Resource | 描述基础设施资源 | 压测集群、压测机、数据库 |
| Template | 描述一个可执行的脚手架模板 | 压测任务模板(核心接入对象) |
| System | 描述多个组件组成的系统 | 压测全链路系统 |
压测接入提示: 在压测模板自助接入中,Template 类型的 Entity 是最关键的入口。每个压测模板对应一个 Template Entity,用户通过它填写参数并触发压测任务。
2.3.2 Catalog(目录)
Catalog 是 Backstage 的“数据中枢”,负责收集、存储和检索所有 Entity。它支持从多个来源(如 GitHub、GitLab、本地文件)自动发现和注册 Entity。Catalog 的核心能力包括:
- 实体注册:通过
catalog-info.yaml文件将实体注册到平台。 - 依赖关系:自动解析实体之间的关联(如 Component 依赖 API)。
- 搜索与过滤:支持按类型、标签、所有者等维度快速查找实体。
- 生命周期管理:跟踪实体的创建、更新、废弃状态。
2.3.3 Plugin(插件)
Plugin 是 Backstage 的功能扩展单元,每个插件可以包含前端 UI、后端 API、数据库模型等。对于压测场景,常见的插件类型包括:
| 插件类型 | 功能 | 压测场景应用 |
|---|---|---|
| 模板插件(Scaffolder) | 提供“创建新资源”的向导式界面 | 压测任务创建、参数配置 |
| 技术文档插件(TechDocs) | 展示 Markdown 格式的文档 | 压测脚本说明、操作手册 |
| 自定义插件 | 根据业务需求开发的专用插件 | 压测结果展示、历史记录查询 |
2.4 开发者门户的价值
Backstage 作为开发者门户,在压测场景中带来的核心价值可以归纳为以下四点:
常见误区: 不要将 Backstage 视为一个“压测工具”。它不直接发起压测流量,而是提供流程编排和资源管理的能力。压测的实际执行由后端引擎(如 JMeter、Locust、nGrinder)完成,Backstage 负责模板化配置与结果展示。
2.5 压测场景下的概念映射
为了帮助理解,下表将 Backstage 核心概念与压测模板接入的实际场景进行映射:
| Backstage 概念 | 压测场景映射 | 具体说明 |
|---|---|---|
| Entity(Template) | 压测任务模板 | 定义压测脚本路径、参数表单、执行步骤 |
| Entity(Component) | 压测目标服务 | 描述被测服务的名称、版本、负责人 |
| Catalog | 压测资源目录 | 统一管理所有压测模板、服务、环境 |
| Plugin(Scaffolder) | 压测任务创建向导 | 提供表单填写、参数校验、任务触发界面 |
| Plugin(TechDocs) | 压测操作文档 | 展示压测脚本编写规范、常见问题 |