본문 바로가기
WIKI 기술 지식 베이스

기술 FAQ

원문 보기 위키 갱신

출처: 문서

본문

Backstage는 어떤 기술을 사용하나요?

Backstage는 대규모 TypeScript 프레임워크로, 프론트엔드 부분은 React와 Material UI를 사용하고 백엔드 부분은 Node.js와 Express 프레임워크를 사용해요.

왜 Material UI인가요?

짧게 말하면, 우리가 Backstage 내부에서 사용해 온 것이 그것이기 때문이에요.

원래 결정은 Google의 Material Design이 철저하고, 잘 고안되었으며, 완전한 디자인 시스템이고, 시스템 자체와 우리가 사용하고 싶다고 알았던 보조 컴포넌트 모두에 성숙하고 강력한 라이브러리가 많다는 것에 기반했어요.

그것은 강력함, 사용자 지정 가능성, 사용 용이성 사이에서 좋은 균형을 잡아요. Backstage의 핵심 초점 중 하나는 플러그인 개발자가 가능한 한 적은 장애물로 생산적으로 일하게 하는 것이에요. Material UI는 플러그인 제작자가 잘 알려진 기술과 방대한 컴포넌트 생태계로 쉽게 시작하게 해줘요.

종합적인 사용자 흐름은 무엇인가요? 행복한 경로(홍 패스) 시나리오요.

Backstage에는 통합자(integrator), 기여자(contributor), 소프트웨어 엔지니어(software engineer)의 세 가지 주요 사용자 프로필이 있어요.

통합자는 Backstage 앱을 호스팅하고 앱에서 사용할 수 있는 플러그인을 구성해요.

기여자는 플러그인을 작성해 앱에 기능을 추가해요.

소프트웨어 엔지니어는 앱의 기능을 사용하고 그 플러그인과 상호작용해요.

Backstage에서 "플러그인"이란 무엇인가요?

플러그인은 Backstage에서 기능을 제공하는 것이에요. 다양한 시스템을 Backstage의 프론트엔드에 통합하는 데 사용되므로, 개발자는 반대편에서 어떤 도구나 서비스에 접근하든 일관된 UX를 얻어요.

각 플러그인은 자체 포함된 웹 앱으로 취급되며 거의 모든 유형의 콘텐츠를 포함할 수 있어요. 모든 플러그인은 공통 프레임워크 API 집합과 재사용 가능한 UI 컴포넌트를 사용해요. 플러그인은 백엔드에서 또는 프록시를 통해 노출된 API에서 데이터를 가져올 수 있어요.

Backstage를 구성하는 다양한 컴포넌트에 대해 더 알아보세요.

앱을 수정하지 않고도 플러그인을 동적으로 설치할 수 없는 이유는 무엇인가요?

이 결정은 Backstage의 핵심 아키텍처와 개발 흐름의 일부예요. 플러그인은 무엇을 제공하고 어떻게 앱에 통합되는지에 대해 많은 자유를 가지며, 따라서 플러그인이 코드로 통합될 수 있는 것과 같은 방식으로 구성으로 통합되도록 허용하는 것은 많은 복잡성을 더할 거예요.

모든 플러그인과 그 의존성을 하나의 앱 번들로 묶으면, 플러그인이 가능할 때 의존성을 서로 공유하도록 허용함으로써 앱 로드 시간에 대한 상당한 최적화도 가능해져요. 이는 Backstage가 빠르게 유지되는 데 기여하며, 사용자와 개발자 경험의 중요한 부분이에요.

Backstage용으로 게시된 Docker 이미지나 helm 차트가 없는 이유는 무엇인가요?

위에서 언급했듯이 Backstage는 바로 사용할 수 있는 패키지 서비스가 아니에요. Backstage를 시작하려면 @backstage/create-app 패키지를 사용해 나만의 Backstage 앱을 만들고 사용자 지정해야 해요.

나만의 앱에서 Docker 이미지를 빌드하려면 앱 템플릿에 기본 포함된 yarn build-image 명령을 사용할 수 있어요. 기본적으로 이 이미지는 프론트엔드와 백엔드를 단일 이미지로 번들하며, 좋아하는 도구로 배포할 수 있어요.

Backstage를 Kubernetes에 배포하는 데 도움이 되는 몇 가지 예시도 contrib 폴더에 있어요.

미래에는 Backstage 기능의 작은 하위 집합을 빠르게 시험해볼 수 있는 예시 이미지가 제공될 가능성이 있지만, 그것들은 데모 사이트에서 볼 수 있는 것보다 훨씬 더 많은 기능을 제공할 수는 없을 거예요.

플러그인을 TypeScript로 작성해야 하나요?

아니요, 원한다면 JavaScript를 사용할 수 있어요. 우리는 Backstage 코어 API를 TypeScript로 유지하고 싶지만, 개별 플러그인에 그것을 강요하지는 않아요.

플러그인이 이미 존재하는지 어떻게 알 수 있나요?

플러그인 디렉토리(Plugin Directory)에서 사용 가능한 모든 플러그인을 탐색하고 검색할 수 있어요.

디렉토리에서 찾을 수 없다면, 플러그인을 작성하기 전에 커뮤니티 플러그인 저장소의 플러그인 이슈를 검색해 진행 중인지 확인하세요. 아직 아무도 생각하지 않았다면 좋아요! 플러그인 제안으로 새 이슈를 열고 플러그인이 무엇을 할지 설명하세요. 이는 우리 기여자들의 노력을 조정하고 기존 기능을 중복하는 것을 피하는 데 도움이 돼요.

Spotify에서 가장 많이 사용되는 플러그인은 무엇인가요?

단연 가장 많이 사용되는 플러그인은 기술 문서를 만드는 데 사용하는 TechDocs 플러그인이에요. Spotify에서의 우리 철학은 "문서를 코드처럼(docs like code)" 취급하는 것이며, 코드를 작성하는 것과 같은 워크플로로 문서를 작성해요. 이는 문서를 만들고, 찾고, 업데이트하기 쉽게 해줘요. TechDocs는 이제 오픈 소스예요. (위의 "Spotify의 내부 플러그인도 오픈 소스로 공개되나요?"도 참고하세요.)

플러그인이 저장소에 포함되도록 계획하나요? 아니면 별도 저장소에서 개발해야 하나요?

기여자는 오픈 소스 플러그인을 이 모노레포의 plugins 디렉토리에 추가할 수 있어요. 그러면 통합자가 앱 인스턴스에서 사용할 수 있는 오픈 소스 플러그인을 구성할 수 있어요. 오픈 소스 플러그인은 오픈 소스 저장소에 게시된 npm 패키지로 다운로드돼요. 오픈 소스 모델 사용을 권장하지만, 기여자가 내부적으로 실험하거나 플러그인을 비공개로 유지하고 싶은 경우가 있다는 것을 알고 있어요. 비공개 소스 플러그인을 작성하는 기여자는 자체 Backstage 저장소의 plugins 디렉토리에서 개발해야 해요. 통합자도 모노레포에서 비공개 소스 플러그인을 로컬로 구성해요.

GitLab이나 Bitbucket 같은 다른 저장소 관리자와의 통합 계획이 있나요?

우리는 GitHub가 가장 익숙한 도구이기 때문에 선택했고, 따라서 GitHub용 통합이 초기 단계에 개발되는 것은 자연스러워요. 이 프로젝트를 GitHub에 호스팅한다고 해서 GitLab이나 Bitbucket 같은 대안과의 통합이 배제되지는 않아요. 시간이 지나면 이러한 도구를 위한 기능을 제공하는 플러그인이 생길 것이라고 믿어요. 바라건대 커뮤니티가 기여하길! 또한 Backstage 구현은 여러분의 요구에 가장 잘 맞는 곳 어디든 호스팅할 수 있다는 점도 주목하세요.

Backstage를 누가 유지보수하나요?

Spotify가 오픈 소스 코어를 유지보수하지만, 프로젝트의 다양한 부분이 여러 회사와 기여자에 의해 유지보수되는 것을 구상해요. 또한 원저자/기여자나 커뮤니티가 유지보수하는 크고 다양한 오픈 소스 플러그인 생태계도 구상해요. 배포에 관해서는 시스템 통합자(보통 조직의 인프라 팀)가 여러분 환경에서 Backstage를 유지보수해요.

자세한 내용은 Owners와 Governance를 참고하세요.

Backstage의 상용 또는 호스팅 버전이 있나요?

네, Backstage 주변에 호스팅 버전, 엔터프라이즈 지원, 컨설팅 서비스를 제공하는 여러 상용 파트너가 있어요.

Backstage는 얼마나 안전한가요?

우리는 보안을 진지하게 생각해요. 패키지와 코드에 관해서는 저장소를 주기적으로 스캔하고 패키지를 최신 버전으로 업데이트해요. 조직 내 Backstage 배포에 관해서는 조직의 배포와 보안 설정에 따라 달라요. 특정 질문이 있으면 Discord로 연락해주세요.

민감한 보안 이슈는 GitHub가 아닌 Spotify의 버그 바운티 프로그램을 통해 신고해주세요.

Backstage는 Spotify와 공유되는 정보를 수집하나요?

아니요. Backstage는 플랫폼을 사용하는 어떤 제3자로부터도 텔레메트리를 수집하지 않아요. Spotify와 오픈 소스 커뮤니티는 기여자, 커밋, 트래픽, 의존성 같은 정보를 담은 GitHub Insights에 접근할 수 있어요. Backstage는 오픈 소스 프레임워크지만 여러분이 자신의 데이터를 통제해요. 여러분은 자신의 Backstage 버전에 제공하는 데이터에 누가 접근할 수 있고 그 데이터가 누구와 공유되는지 통제해요.

Backstage를 개발자 포털 이외의 것을 구축하는 데 사용할 수 있나요?

네. 핵심 프론트엔드 프레임워크는 (1) 여러 팀이 앱의 별도 부분을 구축하고, (2) 전체 경험이 일관되기를 원하는 대규모 웹 애플리케이션을 구축하는 데 사용될 수 있어요. 그렇긴 하지만 프로젝트 2단계에서는 개발자 포털과 소프트웨어 생태계 관리 시스템에 필요한 기능을 추가할 거예요. 우리의 야망은 Backstage를 모듈식으로 유지하는 것이에요.

어떻게 참여할 수 있나요?

바로 뛰어드세요! 초기 버그와 good first issues 중 일부를 고치는 데 도와주세요. 또는 커뮤니티 플러그인 저장소에서 Backstage용 오픈 소스 플러그인을 작성하세요. 기여할 수 있는 모든 방법을 여기에서 보세요. 커뮤니티의 일부가 되어 주시길 바라요.

더 알아보기 (Learn more)