기능 플래그 설계하기

이 문서에서는 기능 플래그를 설계할 때 고려할 점에 대해 다룹니다.
이해를 돕기 위해 예시를 함께 들겠습니다.

시나리오
구기종목 커뮤니티 사이트를 운영하는 A사는 사이트의 웰컴 이미지를 바꾸고 싶습니다.

1. 기능 선정

기능 플래그는 켜짐(on) 상태와 꺼짐(off) 상태가 있습니다.
켜짐 상태일 때 적용할 기능과 꺼짐 상태일 때 적용할 기능을 선정해야 합니다.
보통 꺼짐 상태일 때 기존 기능을, 켜짐 상태일 때 신규 기능을 활성화 합니다.

기능 도입에 있어서는 개발 담당자의 도움이 필요합니다.
신규 기능에 대한 구현과 더불어 핵클 SDK를 연동하고 기능 플래그와 관련된 코드를 작성해야 합니다.

시나리오
A사의 현재 웰컴 이미지는 공을 전면에 내세운 이미지이지만, 추후 다른 종목으로의 확장을 위해 다양한 스포츠를 넣은 이미지로 교체하려고 검토 중입니다.
다만 구기종목 커뮤니티 사이트라는 특성상, 현재의 사용자들이 반감을 가질까 걱정됩니다.

이에 기능 플래그 기능을 통해 소수의 사용자에게 우선 반응을 보기로 했습니다.
기능 플래그 켜짐일 때 신규 이미지를 보여주고, 꺼짐일 때 기존 이미지를 보여주기로 결정합니다.

2. 트래픽 구성

얼마나 많은 사람들에게 켜짐일 때의 기능을 보여줄지 결정해야 합니다.
또한 얼마 동안 반응을 지켜볼 것인지, 반응을 보고 어떻게 트래픽을 늘리거나 줄일지 전략을 짜야 합니다.

시나리오
최초 트래픽 할당은 10%로 해서, 10%의 사용자에게 신규 이미지를 보여주기로 했습니다.
만약 2-3일 내에 인기글에서 이 이미지를 주제로 한 글을 볼 수 있다면 반응이 빠른 것이므로 해당 반응을 살펴보고 트래픽을 조절하기로 했습니다.
별 반응이 없다면 일주일 지켜보고 10%씩 증가 시키기로 했습니다.

3. 결론 도출

트래픽을 조절하며 반응을 충분히 수집했다면 이제 최종적으로 어떤 기능을 선택할지 결정해야 합니다.
이후 개발 담당자에게 핵클 SDK와 관련된 코드는 제거해달라고 요청하세요.

시나리오
A사의 결론은 여러분의 상상에 맡깁니다.
어떤 이미지를 채택할지 결정한 이후 A사의 개발 담당자가 핵클 SDK와 관련된 코드는 말끔히 정리했다는 것은 확실하게 말씀드릴 수 있습니다.