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

Backstage 모노레포의 보물창고, "common-library" 완벽 활용법

by gasbugs 2025. 12. 27.

안녕하세요! 오늘은 Backstage의 패키지 관리 시스템에서 아주 중요한 역할을 담당하는 "common-library" 역할(Role)에 대해 깊이 있게 탐구해 보는 시간을 갖겠습니다. 🚀

Backstage 프로젝트가 커지다 보면 여러 플러그인에서 공통적으로 사용하는 유틸리티 함수나 UI 컴포넌트들이 생겨나기 마련입니다. 이때 코드의 중복을 막고 효율적으로 관리하기 위해 사용되는 것이 바로 이 "common-library"입니다. 💡

 


🏗️ Backstage의 패키지 역할(Role) 시스템 이해하기

Backstage는 모노레포(Monorepo) 내의 수많은 패키지를 효율적으로 빌드하고 관리하기 위해 각 패키지마다 '역할'을 부여합니다. package.json 파일의 backstage.role 필드에 이를 명시하며, 이 역할에 따라 빌드 도구와 시스템이 해당 패키지를 처리하는 방식이 달라집니다.

그중에서도 "common-library"는 이름 그대로 '공통의 보물 창고' 같은 존재입니다.


🌟 "common-library" 패키지의 핵심 목적

이 역할의 가장 주된 목적은 다른 여러 패키지에서 재사용할 수 있는 컴포넌트나 유틸리티를 공유하는 것입니다.

단순히 특정 플러그인 내부에서만 쓰는 것이 아니라, 프로젝트 전반에 걸쳐 범용적으로 쓰이는 코드들을 한데 모으는 것이죠.

✅ 주요 역할 상세 설명

  • 재사용 가능한 컴포넌트 공유: 여러 프론트엔드 플러그인에서 공통으로 쓰이는 버튼 스타일, 레이아웃 컴포넌트 등을 정의하여 일관된 UI를 유지하게 해줍니다.
  • 유틸리티 함수 제공: 날짜 형식 변환, API 응답 처리 로직 등 반복적으로 사용되는 비즈니스 로직이나 헬퍼 함수들을 제공합니다.
  • 플러그인 간 코드 중복 제거: 동일한 코드를 각 플러그인마다 복사해서 붙여넣을 필요 없이, 라이브러리를 참조하게 함으로써 유지보수 효율을 극대화합니다.

🛠️ 실무 활용: package.json 설정 예시

여러분의 프로젝트에서 공통 유틸리티 패키지를 만들고 싶다면 다음과 같이 설정하세요.

JSON

{
  "name": "@internal/common-utils",
  "version": "1.0.0",
  "backstage": {
    "role": "common-library"  // 👈 여기서 역할을 정의합니다.
  },
  "dependencies": {
    "lodash": "^4.17.21"
  }
}

이 설정을 통해 Backstage CLI는 "아, 이 패키지는 다른 곳에 쓰일 라이브러리구나!"라고 인식하고 적절한 빌드 프로세스를 적용합니다.


🏁 결론: 깔끔한 모노레포를 위한 필수 선택

"common-library"는 Backstage 프로젝트의 코드 품질과 일관성을 지켜주는 든든한 지원군입니다. 공통으로 쓰이는 기능을 잘 분리하여 이 역할로 관리한다면, 프로젝트가 아무리 거대해져도 유지보수가 두렵지 않을 것입니다! 🚀