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

Backstage 마스터하기: 소스 코드로 향하는 지도, source-location 어노테이션 완벽 가이드

by gasbugs 2025. 12. 27.

안녕하세요! 오늘은 Backstage의 소프트웨어 카탈로그를 지탱하는 가장 중요한 메타데이터 중 하나인 backstage.io/source-location 어노테이션(Annotation)에 대해 아주 깊이 있게 파헤쳐 보겠습니다. 🚀

Backstage를 사용하다 보면 서비스의 상세 페이지에서 "View Source" 버튼을 누르거나, 문서 위치를 연결할 때 이 설정을 자주 접하게 됩니다. 도대체 이 한 줄의 설정이 어떤 마법을 부리는지, 왜 중요한지 완벽하게 이해해 보세요! 💡


🏗️ backstage.io/source-location이란 무엇인가요?

Backstage에서 관리되는 모든 자원(컴포넌트, API, 리소스 등)은 엔티티(Entity)라고 불리는 YAML 파일로 정의됩니다. 이때 backstage.io/source-location 어노테이션은 해당 엔티티의 실제 소스 코드가 저장되어 있는 물리적인 위치를 가리키는 이정표 역할을 합니다.

쉽게 말해, "이 서비스의 진짜 정체(소스 코드)는 저기 GitHub 레포지토리의 이 폴더에 있어!"라고 알려주는 것이죠. 📍


🌟 왜 이 어노테이션이 핵심적인가요?

단순한 주소 기록 이상의 의미를 가집니다. 이 어노테이션이 올바르게 설정되어야 Backstage의 다음 핵심 기능들이 작동합니다.

1. 소스 코드로의 직접 연결 (View Source) 🔗

사용자가 Backstage 화면에서 "View Source" 버튼을 클릭했을 때, GitHub이나 GitLab의 해당 레포지토리 페이지로 즉시 이동할 수 있게 해줍니다. 개발자가 카탈로그를 보다가 실제 코드를 수정하고 싶을 때 길을 찾아주는 가장 빠른 통로가 됩니다.

2. TechDocs(문서화)의 기반 📖

Backstage의 자랑인 TechDocs는 소스 코드와 함께 저장된 Markdown 파일을 읽어와 웹으로 보여줍니다. 이때 source-location은 TechDocs 빌드 엔진이 어디서 마크다운 파일을 가져와야 하는지 알려주는 기준점이 됩니다.

3. 스캐너 및 프로세서의 가이드 🕵️‍♂️

Backstage 백엔드는 주기적으로 소스 위치를 확인하여 변경 사항이 있는지, 새로운 설정이 추가되었는지 스캔합니다. 이 어노테이션이 없으면 시스템은 해당 엔티티가 '살아있는 코드'인지 단순한 기록인지 구분하기 어렵습니다.


🛠️ 실전 활용: 어떻게 작성하나요?

어노테이션은 보통 엔티티 YAML의 metadata 섹션에 위치합니다.

📝 기본 형식 예시

YAML

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: my-awesome-service
  annotations:
    # 소스 코드의 위치를 지정합니다.
    backstage.io/source-location: url:https://github.com/my-org/my-repo/tree/main/
spec:
  type: service
  owner: guest
  lifecycle: production

🔍 설정 규칙 (Prefix)

  • url: 접두사: 가장 흔히 사용되는 방식으로, 웹을 통해 접근 가능한 URL을 입력합니다.
  • 상대 경로 vs 절대 경로: 보통은 원격 레포지토리의 절대 주소를 사용하지만, 모노레포 환경에서는 해당 서비스가 위치한 특정 하위 폴더까지 지정하는 것이 권장됩니다.

⚠️ 주의해야 할 점 (Common Mistakes)

  1. 브랜치 명시: main이나 master와 같은 브랜치 이름이 URL에 포함되어야 정확한 위치를 추적할 수 있습니다. 🚩
  2. 접두사 누락: 단순히 https://...만 적으면 안 됩니다. 반드시 url: 접두사를 붙여야 Backstage가 위치 정보임을 인식합니다.
  3. 권한 문제: Backstage 서버가 해당 위치(GitHub 등)에 접근할 수 있는 토큰이나 권한이 설정되어 있어야 실제 기능을 100% 활용할 수 있습니다. 🔐

🏁 결론: 엔티티와 실제 세상의 연결 고리

backstage.io/source-location은 Backstage라는 가상 카탈로그와 개발자가 매일 만지는 실제 코드 사이를 이어주는 가장 강력한 연결 고리입니다. 이 설정을 꼼꼼히 관리하는 것만으로도 팀원들의 탐색 시간을 획기적으로 줄여줄 수 있습니다.

여러분의 엔티티 파일에 지금 바로 정확한 위치 정보를 부여해 보세요! 🚀