피처 플래그(Feature Flag, Feature Toggle)는 코드 변경 없이 특정 기능을 런타임에 켜고 끌 수 있는 메커니즘이다. 점진적 출시, A/B 테스트, 킬 스위치, 트렁크 기반 개발을 가능하게 한다.
활용 사례
python
# 기본 구현
FEATURES = {
"new_checkout_flow": True,
"dark_mode": False,
}
def get_user_page(user):
if FEATURES.get("new_checkout_flow"):
return render_new_checkout()
return render_old_checkout()
유형별 피처 플래그
| 유형 | 수명 | 목적 |
|---|
| 릴리스 토글 | 단기 | WIP 기능 숨기기 (트렁크 기반) |
| 실험 토글 | 단기 | A/B 테스트 |
| 운영 토글 | 장기 | 킬 스위치, 성능 제어 |
| 권한 토글 | 장기 | 프리미엄 기능, 베타 사용자 |
LaunchDarkly (피처 플래그 SaaS)
python
import ldclient
client = ldclient.get()
user = {"key": "user-123", "country": "KR", "beta": True}
show_new_feature = client.variation("new-feature", user, False)
if show_new_feature:
render_new_feature()
else:
render_old_feature()
점진적 롤아웃
1일차: 내부 사용자만 (0.1%)
3일차: 베타 사용자 (5%)
7일차: 한국 사용자 (20%)
14일차: 전체 (100%)
각 단계에서 메트릭 확인 후 진행
피처 플래그 부채
오래된 플래그는 코드를 복잡하게 만든다. 기능이 완전히 출시되면 반드시 플래그를 제거할 것.
관련 개념
- •카나리 배포 — 인프라 레벨 점진적 출시
- •A/B 테스트 — 피처 플래그를 이용한 실험
- •Git Flow — 피처 플래그가 필요한 개발 방식
- •관찰가능성 — 플래그 효과 측정