콘텐츠로 바로가기

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 단기 기능 출시 제어
Experiment Toggle 단기 A/B 테스트
Ops Toggle 중기 성능 이슈 시 kill switch
Permission Toggle 장기 프리미엄 기능 접근 제어

기술 부채 위험

플래그가 쌓이면 코드베이스가 복잡해짐. 출시 완료된 Release Toggle은 반드시 제거. "플래그 청소 티켓"을 배포 직후 바로 생성하는 것이 좋은 관행.

구현 패턴

CODE
if (featureFlags.isEnabled('new-checkout', user)) {
  return <NewCheckout />;
}
return <LegacyCheckout />;

외부 서비스(LaunchDarkly, GrowthBook, Unleash) 또는 환경변수·DB 기반 자체 구현.

연결 노트