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

Backstage 백엔드의 심장, @backstage/backend-common 완벽 해부! 🛠️

by gasbugs 2025. 12. 25.

안녕하세요, 플랫폼 엔지니어 여러분! Backstage를 커스텀하거나 새로운 백엔드 플러그인을 만들 때 반드시 마주치게 되는 라이브러리가 있습니다. 바로 @backstage/backend-common이죠. 이 라이브러리가 제공하는 강력한 도구들을 알면 개발 시간이 절반으로 줄어든답니다. ⏱️


1. @backstage/backend-common이란? 🔍

이 패키지는 Backstage 백엔드 생태계에서 "공통 유틸리티의 보물창고"와 같습니다. 백엔드 서비스를 구축할 때 반복적으로 필요한 기능들을 표준화된 방식으로 제공하여, 개발자가 비즈니스 로직에만 집중할 수 있게 도와줍니다.


2. 주요 제공 기능 (핵심 유틸리티) 🛠️

이 라이브러리가 제공하는 대표적인 유틸리티들은 다음과 같습니다.

  • 데이터베이스 연결 (Database Helpers): Knex.js를 기반으로 데이터베이스 설정을 쉽게 관리하고 마이그레이션을 실행하는 도구를 제공합니다. 🗄️
  • 로깅 (Logging): Winston 라이브러리를 기반으로 한 표준화된 로깅 인터페이스를 제공하여, 모든 플러그인이 동일한 포맷으로 로그를 남길 수 있게 합니다. 📝
  • 에러 처리 (Error Handling): NotFoundError, ConflictError와 같은 표준 HTTP 에러 클래스를 제공하여 일관된 API 응답을 보장합니다. ⚠️
  • 토큰 및 인증 (Token Management): 서비스 간 통신 시 필요한 토큰 생성 및 검증 헬퍼를 포함합니다. 🔑

3. 통합 헬퍼 (Integration Helpers) 🤝

Backstage의 가장 큰 장점은 확장성이죠. 이 라이브러리는 외부 시스템과의 통합을 위한 강력한 기능을 포함하고 있습니다.

  • UrlReader: GitHub, GitLab, Bitbucket 등 다양한 소스 코드 호스팅 서비스에서 파일을 읽어올 수 있는 통합 인터페이스를 제공합니다. 🌐
  • Config Loading: app-config.yaml 파일의 설정을 안전하게 읽어오고 유효성을 검사하는 기능을 담당합니다.
  • Discovery: 다른 백엔드 서비스의 위치(URL)를 동적으로 찾아주는 디스커버리 메커니즘을 지원합니다.

4. 왜 이 라이브러리를 써야 할까요? 💡

단순히 편리해서가 아닙니다. @backstage/backend-common을 사용하는 이유는 일관성(Consistency) 때문입니다.

  1. 표준 준수: Backstage 코어 팀이 정의한 모범 사례(Best Practice)를 그대로 따를 수 있습니다.
  2. 유지보수 용이성: 모든 플러그인이 동일한 공통 유틸리티를 사용하면, 시스템 업데이트나 리팩토링 시 훨씬 수월합니다.
  3. 검증된 안정성: 수많은 기업에서 이미 사용 중인 안정적인 코드를 그대로 가져다 쓸 수 있습니다. ✅

5. 최신 트렌드: New Backend System 🆕

최근 Backstage는 "New Backend System"으로 진화하고 있습니다. 이에 따라 @backstage/backend-common에 있던 기능들이 더 세분화된 패키지(예: @backstage/backend-plugin-api, @backstage/backend-defaults)로 이동하는 추세입니다. 하지만 여전히 기존 플러그인이나 레거시 코드에서는 이 라이브러리가 중추적인 역할을 담당하고 있습니다.


6. 마치며 🏁

Backstage 백엔드 개발은 이 공통 라이브러리를 얼마나 잘 활용하느냐에 달려 있다고 해도 과언이 아닙니다. 새로운 플러그인을 만들 계획이라면, 가장 먼저 이 패키지 안에 내가 필요한 기능이 이미 구현되어 있지는 않은지 확인해 보세요!