본문 바로가기
Shoal
Shoal

핵심 개념

타기팅 규칙

사용자 속성, 세그먼트, 비율에 따라 다른 변형을 내보냅니다.

타기팅은 누가 어떤 변형을 받을지 정합니다. 평가할 때마다 컨텍스트를 넘기면 규칙이 그 속성과 비교합니다.

평가 컨텍스트

context.ts
const ctx = {
  user: {
    id: "u_42",            // required, used for stable bucketing
    email: "mia@acme.dev",
    plan: "pro",
    country: "KR",
    createdAt: "2026-03-14",
  },
  device: { os: "ios", appVersion: "5.2.0" },
};

어떤 속성이든 타기팅할 수 있습니다. 중첩 객체는 device.appVersion처럼 점으로 지정합니다.

규칙

규칙은 조건 목록(모두 일치해야 함)과 결과(변형 하나 또는 비율 출시)로 이뤄집니다.

rule.json
{
  "description": "Pro users in Korea",
  "conditions": [
    { "attribute": "user.plan", "op": "in", "values": ["pro", "team"] },
    { "attribute": "user.country", "op": "eq", "values": ["KR"] },
    { "attribute": "device.appVersion", "op": "semver_gte", "values": ["5.0.0"] }
  ],
  "serve": { "variation": "on" }
}

연산자

  • eq, neq, in, not_in: 정확히 일치
  • contains, starts_with, ends_with, matches(정규식): 문자열
  • gt, gte, lt, lte: 숫자와 ISO 날짜
  • semver_eq, semver_gte, semver_lt: 버전 문자열
  • in_segment: 저장된 세그먼트 소속 여부

세그먼트

세그먼트는 재사용하는 규칙입니다. 예를 들어 “베타 테스터”, “사내 직원”, “엔터프라이즈 고객”처럼 만들어 두고, 세그먼트를 한 번 고치면 이를 쓰는 모든 플래그에 반영됩니다.

비율 출시

규칙 결과로 변형 하나 대신 트래픽 비율을 나눌 수 있습니다. Shoal은 flagKey + user.id를 해시하므로 같은 사용자는 서버나 세션이 달라도 항상 같은 구간에 들어갑니다.

이 페이지 수정마지막 수정:
이 페이지가 도움이 되었나요?

검색어를 입력하세요. 브라우저 안의 로컬 색인에서 찾습니다.

↑ ↓ 이동↵ 열기MiniSearch · local