Backstage的原子,’Entity(实体)’完美剖析 – 从服务到团队,一体化管理!

欢迎来到平台工程的世界!🌟 如果您是Backstage的新手,您会很快发现一切都围绕着“目录”展开。但是,您知道构成这个目录的最小砖块,即基本单元是什么吗?

今天,我们将非常详细地剖析构成Backstage基础的“Entity(实体)”。阅读本文后,您将理解您的复杂基础设施如何转变为一个统一、一致的数据模型!


1. 什么是Entity(实体)? 🧱

在Backstage中,Entity(实体)是描述软件生态系统中所有独立组件的标准化基本单元。

它不仅仅指包含源代码的“服务”。构成您系统的所有有机存在都可以成为实体。

  • 服务(Component):实际运行的微服务或Web应用
  • API:服务提供或消费的接口
  • 团队(Group)和开发者(User):关于谁创建和管理它们的信息
  • 基础设施资源(Resource):数据库、S3存储桶、Kubernetes集群等

2. 实体长什么样? (YAML结构) 📝

实体通常在名为catalog-info.yaml的文件中定义。这个文件具有与Kubernetes资源定义非常相似的结构,您可能会很熟悉。每个实体主要由三部分组成:

YAML

apiVersion: backstage.io/v1alpha1
kind: Component # 实体的种类
metadata:
  name: my-awesome-service # 实体的名称
  description: 우리 팀의 메인 API 서비스입니다.
  tags: ["java", "spring-boot"]
  annotations:
    backstage.io/managed-by-location: url:https://github.com/...
spec:
  type: service
  owner: team-alpha # 所属团队(与其他实体的关系)
  lifecycle: production
  1. apiVersion & kind: 定义这个实体是什么(例如,是组件还是组)。
  2. metadata: 包含用于搜索和识别的信息,如名称、描述和标签。
  3. spec: 定义特定于该种类(Kind)的详细信息以及与其他实体之间的关系(Relationship)。

3. 实体强大的原因:关系(Relationship) 🕸️

实体之所以能够超越简单的“说明书”而发挥强大作用,是因为实体之间的连接。

例如,当您在Component实体的spec.owner字段中写入特定Group实体的名称时,Backstage会自动将两者连接起来。

  • “这个服务由谁管理?” 👉 连接到Group实体
  • “这个服务使用什么数据库?” 👉 连接到Resource实体
  • “这个团队开发了哪些API?” 👉 可以反向查询

这些关系共同构成了庞大的软件图谱(Software Graph)。


4. 主要实体种类(Kinds)一览 🧐

Backstage默认提供以下核心种类:

种类(Kind) 描述 示例
Component 由代码组成的软件片段 服务、网站、库
API 服务之间的接口契约 REST API, GraphQL, gRPC
Resource 软件运行所需的基础设施 PostgreSQL, S3, RDS
Group 组织内的团队或部门 平台团队、支付部门
User 单个开发者 张三、李四
System 相关实体的较大抽象组 支付系统、用户管理系统

—

5. 实体为开发者带来的优势 💡

  1. 一致性:所有团队都以相同的格式描述其服务。
  2. 可发现性(Discoverability):“不知道谁创建的API”将不复存在。通过在目录中搜索实体,可以找到所有信息。
  3. 自动化的基础:基于实体信息,可以自动关联部署状态检查、安全漏洞扫描结果。🤖

🏁 总结

Backstage目录的基石——Entity(实体),不仅仅是数据片段,它更像是绘制组织复杂软件地图的坐标。实体定义和连接得越好,开发者就能越专注于实际的“开发”,而不是不必要的沟通。

何不立即在您的项目根目录中创建一个catalog-info.yaml文件,并定义您的第一个实体呢?🚀



Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注