Feature Flag?

Feature Toggle 또는 Feature Switch 라고도 한다. 코드를 배포할 때 안전 장치를 함께 포함시켜 런타임에서 코드를 변경하지 않고 신속하게 기능을 전환할 수 있는 매커니즘이 필요한 경우가 있다. 예를 들어 신속한 롤백이 필요한 경우, 롤백 재배포에도 많은 시간이 소요될 수 있다. 이러한 장애에 대응하기 위해, 런타임에서 선택적 호출을 하고 싶다면 Feature Flag를 사용할 수 있는 것이다. Feature Flag특정 기능을 동적으로 활성화 또는 비활성화 하기 위해 사용되는 조건부 코드 실행 매커니즘이다. 코드를 변경하지 않고, 런타임 동작을 수정할 수 있는 SW개발기법이다. 런타임 환경에서 특정 조건에 따라 코드 특정 부분을 스위치하여 실제 사용자에게 제공되는 서비스 기능을 다르게 제어할 수 있다. 또한 제어를 위해서 매번 코드를 수정하여 배포할 필요가 없다.

피쳐 플래그를 사용하면 누가 볼 것 인가, 언제 볼 것인가, 무엇을 볼 것인가 를 조정할 수 있다. 기존 코드 배포 == 기능 공개와 같은 상황에서 Feature Flag를 도입하면, 코드배포 ≠ 기능공개가 아니라 성과가 좋은 경우 점진적인 배포(카나리 배포)가 가능하도록 추적가능한 플래그를 꽂은 것이 된다.

Feature Flag의 장점은 다음과 같다.


  1. 시스템 안정성
    1. 긴급한 장애 상황에서 특정 기능을 비활성화 또는 대체 가능함
    2. 기존 시스템에서 신규 시스템으로 트래픽 제어가 가능
  2. AB테스트
    1. 여러 버전의 기능을 사용자에게 제공하여 피드백을 받고, 필요한 경우 변경이 가능함
  3. 개인화
    1. 사용자 별로 특정 기능을 활성화 및 비활성화
  4. 출시(Roll out) 관리
    1. 점진적인 릴리즈가 가능함

Flag 를 외부에서 제어하기

Feature Flag를 어플리케이션에 적용하기 위해서 Flag의 상태를 외부에서 제어할 수 있어야 한다. Flag Router가 호출될 때 마다 Flag Configuration에서 Flag의 상태를 가져와 판단하도록 구성한다.

Flag Configuration