본문 바로가기
클라우드/Backstage

Backstage 모델 탐구: API 엔티티가 단순한 문서를 넘어 '계약'이 되는 이유

by gasbugs 2025. 12. 26.

안녕하세요! 오늘은 Backstage의 심장부라고 할 수 있는 소프트웨어 카탈로그(Software Catalog), 그중에서도 시스템 간의 대화 창구인 API 엔티티(Entity)의 역할에 대해 아주 상세하게 파헤쳐 보겠습니다. 🚀

Backstage를 처음 접하면 Component, System, Group 등 다양한 개념들 사이에서 API가 정확히 어떤 위치에 있는지 헷갈릴 때가 많죠. 오늘 이 글을 읽고 나면 API가 단순한 문서화를 넘어, 어떻게 마이크로서비스 생태계를 연결하는지 완벽히 이해하시게 될 겁니다! 💡


🏗️ Backstage 모델에서 API란 무엇인가?

 

Backstage의 소프트웨어 카탈로그 모델에서 API는 "하나의 소프트웨어가 다른 소프트웨어에 제공하는 인터페이스"를 정의하는 독립적인 엔티티(Entity)입니다.

단순히 "이 서비스는 이런 기능을 제공해"라고 말로 설명하는 것이 아니라, 기계가 읽을 수 있고(Machine-readable) 표준화된 형식(OpenAPI, AsyncAPI, GraphQL 등)으로 명시된 계약서와 같습니다. 📜


🌟 API 엔티티의 핵심 역할 4가지

Backstage 내에서 API가 수행하는 가장 중요한 역할들을 살펴봅시다.

1. 서비스 간의 '계약(Contract)' 관리 🤝

가장 본질적인 역할입니다. API 엔티티는 특정 서비스(Component)가 외부에 노출하는 기능을 정의합니다.

  • 제공자(Provider): 어떤 컴포넌트가 이 API를 구현하고 관리하는지 명시합니다. (spec.owner)
  • 소비자(Consumer): 어떤 컴포넌트들이 이 API를 사용하여 데이터를 가져가는지 추적합니다.

2. 기술 문서의 중앙 집중화 (Single Source of Truth) 📚

개발자들이 가장 힘들어하는 것 중 하나가 "최신 API 명세서 찾기"입니다. API 엔티티는 이를 한곳에 모아줍니다.

  • 다양한 포맷 지원: Swagger(OpenAPI), gRPC(Protocol Buffers), GraphQL Schema 등을 모두 지원합니다.
  • 시각화: Backstage UI에서 직접 API 정의를 읽기 좋게 렌더링해 주므로, 별도의 문서 사이트를 찾아 헤매지 않아도 됩니다. 🔍

3. 종속성 가시성 확보 (Dependency Tracking) 🕸️

API는 시스템 전체의 '지형도'를 그리는 데 핵심적인 역할을 합니다.

  • "이 API를 수정하면 어떤 서비스들이 영향을 받을까?"라는 질문에 즉각 답할 수 있습니다.
  • providesApi와 consumesApi 관계 설정을 통해 복잡한 마이크로서비스 간의 연결 고리를 시각화합니다.

4. 시스템 경계 정의 (System & Domain) 🏰

API는 여러 컴포넌트를 묶어주는 System이나 Domain 단위에서 외부와 소통하는 관문 역할을 합니다. 이를 통해 거대한 아키텍처 속에서 추상화 계층을 만들 수 있습니다.


🛠️ API 엔티티 실제 예시 (YAML 살펴보기)

Backstage에서는 모든 것이 YAML로 정의됩니다. API 엔티티가 어떻게 생겼는지 자세히 뜯어볼까요? 🕵️‍♂️

YAML

apiVersion: backstage.io/v1alpha1
kind: API
metadata:
  name: user-profile-api
  description: 사용자의 프로필 정보를 조회하고 수정하는 API입니다.
spec:
  type: openapi           # API의 종류 (openapi, grpc, graphql 등)
  lifecycle: production   # 현재 상태 (experimental, production, deprecated)
  owner: team-a           # 이 API를 책임지는 팀
  definition: |           # 실제 API 명세 (혹은 외부 파일 참조 가능)
    openapi: 3.0.0
    info:
      title: User Profile API
      version: 1.0.0
    paths:
      /users/{id}:
        get:
          summary: 사용자 조회
  • spec.type: 어떤 기술을 쓰는지 명시하여 적절한 뷰어(Viewer)를 띄워줍니다. 🎨
  • spec.definition: 실제 기술 명세가 들어가는 곳입니다. 직접 작성하거나 외부 URL을 참조할 수 있습니다.

🧭 API 중심의 워크플로우: 개발자 경험(DevEx)의 향상

Backstage에서 API가 잘 정의되어 있으면 개발자의 하루가 이렇게 바뀝니다.

  1. 발견(Discovery): 신규 프로젝트 시작 시, 이미 만들어진 user-service의 API가 있는지 검색합니다. 🔎
  2. 이해(Understanding): 검색 결과로 나온 API 페이지에서 엔드포인트와 파라미터를 즉시 확인합니다. 📖
  3. 검증(Validation): 해당 API가 production 상태인지, 혹은 곧 사라질 deprecated 상태인지 확인하여 안정성을 확보합니다. ✅
  4. 협업(Collaboration): API 수정이 필요할 때 'Owner'로 등록된 팀에게 바로 연락합니다. 💬

🏁 결론: API는 단순한 문서 그 이상입니다!

Backstage 소프트웨어 카탈로그 모델에서 API의 역할은 "마이크로서비스 생태계의 질서를 세우는 연결고리"라고 정의할 수 있습니다.

단순히 문서를 저장하는 저장소가 아니라, 서비스 간의 상호작용을 투명하게 공개하고 변경에 따른 영향을 예측하게 함으로써 시스템의 복잡성을 통제할 수 있게 해줍니다. 🌉

여러분의 조직에서도 Backstage를 도입 중이라면, 컴포넌트 정의뿐만 아니라 API 엔티티를 얼마나 꼼꼼하게 관리하느냐가 플랫폼 공학(Platform Engineering)의 성공을 좌우할 것입니다!


태그: Backstage, API, SoftwareCatalog, DeveloperPortal, Microservices, Documentation, PlatformEngineering, DevOps, OpenAPI, Architecture