Feature Toggle 또는 Feature Switch 라고도 한다. 코드를 배포할 때 안전 장치를 함께 포함시켜 런타임에서 코드를 변경하지 않고 신속하게 기능을 전환할 수 있는 매커니즘이 필요한 경우가 있다. 예를 들어 신속한 롤백이 필요한 경우, 롤백 재배포에도 많은 시간이 소요될 수 있다. 이러한 장애에 대응하기 위해, 런타임에서 선택적 호출을 하고 싶다면 Feature Flag를 사용할 수 있는 것이다. Feature Flag는 특정 기능을 동적으로 활성화 또는 비활성화 하기 위해 사용되는 조건부 코드 실행 매커니즘이다. 코드를 변경하지 않고, 런타임 동작을 수정할 수 있는 SW개발기법이다. 런타임 환경에서 특정 조건에 따라 코드 특정 부분을 스위치하여 실제 사용자에게 제공되는 서비스 기능을 다르게 제어할 수 있다. 또한 제어를 위해서 매번 코드를 수정하여 배포할 필요가 없다.
피쳐 플래그를 사용하면 누가 볼 것 인가, 언제 볼 것인가, 무엇을 볼 것인가 를 조정할 수 있다. 기존 코드 배포 == 기능 공개
와 같은 상황에서 Feature Flag를 도입하면, 코드배포 ≠ 기능공개
가 아니라 성과가 좋은 경우 점진적인 배포(카나리 배포)가 가능하도록 추적가능한 플래그를 꽂은 것이 된다.
Feature Flag의 장점은 다음과 같다.
Feature Flag를 어플리케이션에 적용하기 위해서 Flag의 상태를 외부에서 제어할 수 있어야 한다. Flag Router가 호출될 때 마다 Flag Configuration에서 Flag의 상태를 가져와 판단하도록 구성한다.