기능 플래그
기능 플래그 (Feature Flags)
Backstage는 플러그인 내부나 애플리케이션 생성 중에 기능 플래그를 정의할 수 있는 기능을 제공해요. 이를 통해 플러그인의 일부를 기능 플래그를 켠 개별 사용자로 제한할 수 있어요.
출처: 문서
본문
Backstage는 플러그인 내부나 애플리케이션 생성 중에 기능 플래그를 정의할 수 있는 기능을 제공해요. 이를 통해 플러그인의 일부를 기능 플래그를 켠 개별 사용자로 제한할 수 있어요.
이 페이지는 기능 플래그를 정의하고, 설정하고, 읽는 과정을 설명해요. 기능 플래그를 소프트웨어 템플릿과 함께 특별히 사용하는 것을 찾고 있다면 템플릿 작성을 참고하세요.
기능 플래그 정의하기 (Defining a Feature Flag)
플러그인에서
기능 플래그는 createFrontendPlugin의 featureFlags 옵션을 통해 선언돼요.
src/plugin.ts
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';export const examplePlugin = createFrontendPlugin({ pluginId: 'example', featureFlags: [ { name: 'show-example-feature', description: 'Enables the new beta dashboard view', }, ], extensions: [ // ... ],});
description 속성은 선택 사항이라는 점에 유의하세요. 제공되지 않으면 기본 "Registered in {pluginId} plugin"(플러그인에서 등록됨) 메시지가 표시돼요.
애플리케이션에서
애플리케이션에서 기능 플래그를 정의하는 것은 createApp() 함수 호출의 featureFlags 배열에 기능 플래그를 추가해 수행돼요.
packages/app/src/App.tsx
import { createApp } from '@backstage/frontend-defaults';const app = createApp({ // ... featureFlags: [ { name: 'tech-radar', description: 'Enables the tech radar plugin', }, ], // ...});
기능 플래그 활성화하기 (Enabling Feature Flags)
기능 플래그는 기본적으로 꺼져 있으며 개별 사용자가 backstage 인터페이스에서 업데이트할 수 있어요. 이는 Settings > Feature Flags 아래의 페이지로 이동해 설정돼요.
사용자의 선택은 사용자 브라우저의 로컬 스토리지에 저장돼요. 기능 플래그가 토글되면 변경 사항을 보려면 사용자가 페이지를 새로 고쳐야 할 수도 있어요.
기능 플래그 상태 평가하기 (Evaluating Feature Flag State)
FeatureFlagsApi를 사용해 기능 플래그를 조회할 수 있어요.
import { useApi, featureFlagsApiRef } from '@backstage/frontend-plugin-api';function MyComponent() { const featureFlagsApi = useApi(featureFlagsApiRef); if (featureFlagsApi.isActive('show-example-feature')) { return <NewFeatureComponent />; } return <PreviousFeatureComponent />;}