안녕하세요, 플랫폼 엔지니어 여러분! 🚀 Backstage를 사용하다 보면 catalog-info.yaml 파일이 어떻게 마법처럼 화면에 나타나는지 궁금한 적 없으셨나요?
Backstage 카탈로그는 단순히 DB를 조회하는 것이 아니라, 거대한 "데이터 파이프라인"처럼 동작합니다. 오늘은 그 파이프라인의 첫 번째 단계인 Ingestion(수집) 과정에 대해 상세히 파헤쳐 보겠습니다!

1. 카탈로그 백엔드 전체 흐름 이해하기 🌊
상세 단계로 들어가기 전, 전체적인 그림을 먼저 그려봅시다. 카탈로그 데이터는 크게 3단계를 거칩니다.
- Ingestion (수집): 외부 데이터(GitHub, YAML 등)를 시스템 내부로 가져오는 단계 (오늘의 주인공!)
- Processing (처리): 가져온 데이터를 검증하고, 연관 관계를 분석하는 단계
- Stitching (스티칭): 분산된 데이터 조각들을 모아 최종 '엔터티(Entity)' 객체를 완성하는 단계
2. 첫 번째 관문: Ingestion (수집) 📥
시스템 외부의 "Raw Data(가공되지 않은 데이터)"가 카탈로그의 세계로 발을 들이는 가장 첫 번째 단계입니다. 이 단계의 목표는 "어디선가 데이터를 읽어와서 카탈로그 DB의 임시 저장소(Shadow Table)에 넣는 것"입니다.
이 역할을 수행하는 두 가지 주요 방식이 있습니다.
① Entity Providers (엔터티 프로바이더) 🤖
최신 Backstage 아키텍처에서 권장하는 방식입니다. 외부 시스템(예: AWS, GitHub 조직, LDAP)을 주기적으로 스캔하여 한꺼번에 많은 데이터를 밀어 넣을 때 사용합니다.
- 장점: 대량의 데이터를 효율적으로 가져오며, 외부 시스템의 변경 사항을 동기화하기에 최적화되어 있습니다.
② Processors (프로세서 - Reading 단계) 📖
전통적인 방식으로, 특정 URL(예: GitHub의 yaml 파일 경로)을 통해 데이터를 '읽어오는' 역할을 합니다.
- 동작: UrlReader 인터페이스를 사용하여 지정된 경로의 파일 내용을 텍스트 형태로 읽어옵니다.
3. 왜 이 단계가 중요할까요? ✨
Processing이나 Stitching 단계는 이미 들어온 데이터를 "요리"하는 과정입니다. 하지만 Ingestion 단계는 "재료를 사 오는 과정"과 같습니다.
- 데이터 소스의 다양성: GitHub뿐만 아니라 데이터베이스, API, 엑셀 파일 등 무엇이든 '수집' 단계만 구현하면 Backstage에 등록할 수 있습니다.
- 성능의 기점: 여기서 데이터를 얼마나 효율적으로 긁어오느냐에 따라 전체 카탈로그의 업데이트 속도가 결정됩니다. ⚡
4. Raw Data가 수집된 후에는 어떤 일이 벌어지나요? 🔄
데이터가 시스템 내부로 들어오면, 아직은 'Stitched' 되지 않은 상태입니다.
- Validation: 가져온 YAML이 규격에 맞는지 검사합니다.
- Relation Parsing: owner: team-a라는 문구를 보고, 이 서비스와 팀 사이의 연결 고리를 찾기 시작합니다.
- Final Stitching: 모든 검사가 끝나면 드디어 우리가 화면에서 보는 멋진 엔터티 카드가 완성됩니다!
5. 요약: 핵심은 'Entity Provider'와 'Reader' 📝
Backstage 카탈로그 백엔드 흐름에서 데이터를 프로세싱하고 스티칭하기 전, 외부의 날것(Raw) 그대로의 데이터를 시스템 내부로 끌어들이는 단계는 Ingestion입니다.
개발자로서 여러분이 새로운 데이터 소스를 Backstage에 연동하고 싶다면, 바로 이 Ingestion 단계의 커스텀 Entity Provider를 작성하는 것부터 시작하게 됩니다.
🏁 마무리하며
Backstage는 단순한 웹 사이트가 아니라 강력한 데이터 통합 엔진입니다. 그 엔진에 연료를 공급하는 과정이 바로 오늘 배운 Ingestion 단계이죠. 이 과정을 이해하면 "왜 내 서비스가 카탈로그에 안 뜨지?" 같은 트러블슈팅 상황에서도 당황하지 않고 원인을 찾을 수 있습니다!
'클라우드 > Backstage' 카테고리의 다른 글
| Backstage 플러그인 개발 최적화! 프론트와 백엔드 사이의 '코드 공유' 완벽 전략 (0) | 2025.12.25 |
|---|---|
| Backstage의 원자, 'Entity(엔터티)' 완벽 해부 - 서비스부터 팀까지 하나로! (0) | 2025.12.25 |
| TypeScript 대규모 프로젝트, tsc로 똑똑하게 빌드하는 A to Z 🚀 (0) | 2025.12.25 |
| 파일이 수백 개라도 끄떡없다! TypeScript 프로젝트 전체를 가장 효율적으로 컴파일하는 비법 🛠️ (0) | 2025.12.25 |
| "어디에 뭐가 있지?" 고민 끝! Backstage Software Catalog가 개발자의 생산성을 높이는 4가지 방법 🛠️ (0) | 2025.12.25 |