Feature Flag
코드 배포와 기능 활성화를 분리하는 기법. 런타임에 기능을 켜고 끌 수 있어 안전한 배포와 점진적 롤아웃을 가능하게 함. 플래그가 쌓이면 코드베이스가 복잡해짐. 출시 완료된 Release Toggle은 반드시 제거. "플래그 청소 티켓"을 배포 직후 바로 생성하는...
sys.entry
M
Me
hyunyoun's Blog
software-engineering-devops1 min read
Feature Flag
코드 배포와 기능 활성화를 분리하는 기법. 런타임에 기능을 켜고 끌 수 있어 안전한 배포와 점진적 롤아웃을 가능하게 함.
핵심 가치
- 배포 분리: 코드를 main에 머지하되 비활성 상태로 배포
- 점진적 롤아웃: 1% → 10% → 100% 트래픽 단계 확대
- 즉각 롤백: 코드 재배포 없이 플래그 비활성화로 즉시 되돌림
- A/B 테스트: 사용자 세그먼트별 다른 경험 제공
유형
기술 부채 위험
플래그가 쌓이면 코드베이스가 복잡해짐. 출시 완료된 Release Toggle은 반드시 제거. "플래그 청소 티켓"을 배포 직후 바로 생성하는 것이 좋은 관행.
구현 패턴
CODE
if (featureFlags.isEnabled('new-checkout', user)) {
return <NewCheckout />;
}
return <LegacyCheckout />;외부 서비스(LaunchDarkly, GrowthBook, Unleash) 또는 환경변수·DB 기반 자체 구현.
연결 노트
- ZK-Technical-Debt — 장기 방치 플래그는 기술 부채
- ZK-Trunk-Based-Development — Feature Flag는 trunk-based의 핵심 인프라