플래그는 변형(variation)이라는 값 목록을 가진 이름 있는 스위치입니다. 코드가 플래그 값을 물으면 Shoal은 환경과 전달된 컨텍스트를 보고 답합니다.
플래그 유형
| 유형 | 변형 | 주요 용도 |
|---|---|---|
boolean | true / false | 출시 토글, 긴급 차단 스위치 |
string | 문자열 목록 | A/B 변형, 문구 실험 |
number | 숫자 목록 | 한도, 타임아웃, 가격 |
json | JSON 객체 | 원격 설정 묶음 |
TypeScript
const theme = await shoal.variation("checkout-theme", ctx, "classic");
const limit = await shoal.variation("upload-limit-mb", ctx, 25);
const config = await shoal.variation("pricing-page", ctx, { showAnnual: false });마지막 인자는 대체값입니다. 플래그가 없거나, SDK가 아직 로드되지 않았거나, 값의 타입이 다르면 이 값이 반환되므로 플래그 때문에 앱이 멈추는 일은 없습니다.
평가 순서
호출할 때마다 Shoal은 아래 순서로 확인하고 처음 일치하는 곳에서 멈춥니다.
- 플래그가 꺼져 있나요? 환경의 off 변형을 반환합니다.
- 개별 대상. 사용자 키가 특정 변형에 등록돼 있으면 그 값을 반환합니다.
- 규칙. 타기팅 규칙을 위에서 아래로 평가합니다.
- 기본 규칙. 기본 변형이나 비율 출시 결과를 반환합니다.
수명 주기
플래그는 원래 임시로 쓰는 것입니다. 모든 곳에서 30일 동안 같은 변형만 내보낸 플래그는 오래됨(stale)으로 표시되고, shoal flags stale로 목록을 확인해 해당 코드 경로를 지울 수 있습니다.
Diff
- if (await shoal.isOn("new-checkout", ctx)) {
- return renderNewCheckout();
- }
- return renderClassicCheckout();
+ return renderNewCheckout();영구 플래그
긴급 차단 스위치, 요금제 권한, 운영 한도처럼 계속 남는 플래그도 있습니다. 영구로 표시하면 오래된 플래그 목록에서 빠집니다.