CBA — Backstage 인증 어소시에이트 · 앱 저장소와 플러그인 만들기 · 퀴즈
퀴즈: 앱 저장소와 플러그인
문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
각 패키지의 `package.json` 에 있는 `backstage.role` 이 하는 일은?
- 그 패키지를 볼 수 있는 사용자 역할을 정한다
- backstage-cli 가 그 패키지를 어떻게 빌드하고 테스트할지 정한다
- 카탈로그에서 그 패키지의 소유 팀을 정한다
- npm 레지스트리에 올릴 때의 접근 수준을 정한다
새 백엔드 시스템에서 플러그인과 모듈의 차이는?
- 플러그인은 유료이고 모듈은 무료다
- 플러그인은 백엔드에서, 모듈은 프런트엔드에서 돈다
- 모듈이 먼저 등록되어야 플러그인이 뜬다
- 플러그인은 기능 하나를 통째로 제공하고, 모듈은 이미 있는 플러그인의 확장점에 끼우는 조각이다
프런트엔드 플러그인에서 `createRouteRef` 를 `routes.ts` 라는 별도 파일에 두는 이유는?
- 페이지 컴포넌트와 플러그인이 서로를 참조하면서 생기는 순환 임포트를 끊기 위해
- 라우트 참조는 빌드 시점에 생성되는 파일이라 손으로 못 고치기 때문
- 파일 이름이 routes 여야 backstage-cli 가 라우트를 인식하기 때문
- 라우트 참조가 백엔드에서도 임포트되어야 하기 때문
엔티티 페이지에 `EntityLayout.Route` 로 탭을 붙였는데 `App.tsx` 에 라우트를 등록하지 않으면?
- 빌드가 실패한다
- 탭 자체가 화면에 나타나지 않는다
- 탭은 보이는데 눌렀을 때 빈 화면이 뜨고 오류 메시지도 나오지 않는다
- 다른 모든 탭까지 함께 사라진다
CI 에서 `yarn install --immutable` 을 쓰는 이유는?
- 잠금 파일을 고치지 않겠다는 뜻이라, 의존성이 조용히 올라가는 것을 막는다
- 설치 속도가 빨라져 CI 전체 시간이 눈에 띄게 줄어들기 때문에 쓴다
- 이 플래그가 있어야 yarn 이 워크스페이스 구조를 인식하기 때문에 쓴다
- 취약점이 알려진 패키지를 설치 단계에서 걸러 주기 때문에 쓴다
루트 `package.json` 의 `workspaces` 에 `plugins/*` 를 넣는 이유는?
- 그래야 플러그인이 자동으로 카탈로그에 등록되기 때문
- 플러그인 디렉터리를 git 추적에서 제외하기 위해
- 그 경로의 코드만 타입 검사에서 빠지기 때문
- 사내 플러그인을 레지스트리에 올리지 않고도 앱에서 패키지 이름으로 가져다 쓸 수 있게 하려고
`createRoutableExtension` 에 `mountPoint` 를 주는 이유는?
- 번들 크기를 줄이려고 컴포넌트를 미리 압축해 두는 설정 항목이다
- 그 확장이 어느 라우트 참조에 붙는 페이지인지를 알려 준다
- 그 플러그인이 쓰는 백엔드 엔드포인트의 기본 경로를 정한다
- 엔티티 페이지에 붙는 탭의 제목과 아이콘을 함께 정한다