🌳 고급 고급
Feature Flag가 뭔가요?
쉽게 이해하기
전등 스위치를 떠올려보세요. 전선은 이미 연결되어 있지만 스위치를 켜야 불이 들어옵니다. Feature Flag도 새 기능의 코드는 배포되어 있지만, 특정 조건에서만 켜지도록 스위치를 달아두는 것입니다.
핵심 정리
새로운 기능을 코드로 배포하지만 켜고 끄는 스위치로 제어하는 기법입니다.
자세히 알아보기
Feature Flag(기능 플래그)는 코드 배포와 기능 공개를 분리하는 기법입니다. 새로운 기능을 만들었지만 아직 모든 사용자에게 보여주고 싶지 않을 때, 플래그를 통해 특정 사용자에게만 활성화할 수 있습니다.
예를 들어 쇼핑몰에 새로운 결제 시스템을 만들었다고 해보세요. 바로 모든 사용자에게 적용하면 위험합니다. 대신 처음에는 내부 직원에게만, 그다음에는 VIP 고객 100명에게만, 문제가 없으면 전체 사용자에게 단계적으로 공개할 수 있습니다. 이 모든 과정에서 코드를 다시 배포할 필요가 없습니다. 단지 플래그 설정만 바꾸면 됩니다.
Feature Flag는 A/B 테스트에도 쓰입니다. 같은 기능의 두 가지 버전을 만들고, 사용자 절반에게는 A를, 나머지 절반에게는 B를 보여주며 어느 것이 더 좋은지 비교할 수 있습니다.
문제가 생겼을 때도 유용합니다. 새 기능 때문에 서버에 문제가 생기면, 코드를 롤백하지 않고 플래그만 끄면 즉시 이전 상태로 돌아갑니다. 이를 'kill switch'라고 부릅니다.
실무에서는 LaunchDarkly, Unleash 같은 Feature Flag 전문 도구를 쓰거나, 자체 시스템으로 구현합니다. 환경변수나 데이터베이스에 플래그 설정을 저장하고, 코드에서 이 값을 읽어 기능을 켜고 끕니다. 대규모 서비스에서는 필수적인 배포 전략입니다.