본문으로 건너뛰기

FeatureFlag

Plan / Subscription 기반 feature gating + 3계층 오버라이드 (축소만 허용)

상태

항목
Layerfoundation
TierL0
Statuswip
Version0.9.0
가격Free (free)
**카�
�고리**Infrastructure

개요

개요

FeatureFlag 는 multi-saas-kit 의 Layer 0 Foundation Plugin � 니다. 요금제 기반 feature gating 과 3계층 오버라이드 (Plan → SaaS → Tenant) 를 제공합니다.

축소만 허용 규칙: 하위 계층은 상위보다 더 넓은 권한을 설정할 수 없습니다.

두 �

류의 feature 값

1. 상태 값 (string)

  • active (priority 0) — 사용 가능
  • disabled (priority 1) — 비활성 (사용 차단, 메뉴는 표시)
  • hidden (priority 2) — 완전히 숨김

자식 계층은 부모와 같거나 더 제한적인 값만 설정 가능.

2. 숫자 한도 (int)

  • -1 = 무제한
  • 그 외 자연수 = 한도

부모 무제한이면 자식은 모든 값 가능. 자식이 무제한 요청해도 부모 한도 유지.

핵심 컴포넌트

FeatureValueResolver (Pure)

축소 규칙 + 검증 로직만 추출 — 모델/DB 의존 없음.

use App\Plugins\FeatureFlag\Services\FeatureValueResolver;

$r = new FeatureValueResolver;

// 축소 적용
$r->applyRestriction('active', 'disabled'); // 'disabled'
$r->applyRestriction('hidden', 'active'); // 'hidden' (확장 거부)
$r->applyRestriction(100, 50); // 50
$r->applyRestriction(-1, 50); // 50 (부모 무제한)

// 검증
$r->isValidOverride('active', 'disabled'); // true (축소)
$r->isValidOverride('disabled', 'active'); // false (확장)

// Helpers
$r->isActive('active'); // true
$r->isUnlimited(-1); // true
$r->normalizeLimitKey('users'); // 'limit.users'

// 다단계 누적 (Plan → SaaS → Tenant)
$r->applyChain(['active', 'disabled', 'hidden']); // 'hidden'
$r->applyChain([1000, null, 100]); // 100 (null 은 skip)

Models / Migrations (Phase 3 — 향후)

  • Plan — 요금제 정의 (features JSON)
  • Subscription — Tenant ↔ Plan 매핑
  • SaasFeatureOverride — SaaS 단위 override
  • TenantFeatureOverride — Tenant 단위 override

Tables: plg_plans, plg_subscriptions, plg_saas_feature_overrides, plg_tenant_feature_overrides.

진행 상황

  • � Phase 1+2 — Skeleton + Pure FeatureValueResolver + 24 unit tests
  • ⬜ Phase 3 — Models + Migrations
  • ⬜ Phase 4 — FeatureAccess Service (Tenant 의존)
  • ⬜ Phase 5 — scout.how 어댑터

출처

scout.how App\Services\FeatureAccess(243줄) 의 applyRestriction, isValidOverride, STATE_PRIORITY 핵심 로직을 Pure Resolver 로 추출.

다른 Plugin 과의 관계

Commerce Plugin 과 별개:

  • Commerce: 상품 / 주문 / 결제
  • FeatureFlag: 기능 가시성 / 한도 (gating)

향후 통합: Commerce 의 Subscription 결제 → FeatureFlag 의 Plan 활성화 라이프사이클 연동.

라이선스

MIT

데모


🛒 Plugin Store에서 보기: store.codebase.how/plugins/feature-flag