Feature Flag를 사용하면 어떤 장점이 있고 운영 시 무엇을 주의해야 하나요?
답변 포인트
배포와 릴리즈를 분리하는 장점, 오래된 flag가 기술 부채가 되는 문제를 함께 보세요.
정답 및 해설
빠른 요약
Feature Flag는 코드를 배포해두고도 기능 노출 여부를 설정으로 제어하는 방식입니다. 덕분에 배포(deploy)와 릴리즈(release)를 분리할 수 있습니다.
Feature Flag는 코드를 배포해두고도 기능 노출 여부를 설정으로 제어하는 방식입니다. 덕분에 배포(deploy)와 릴리즈(release)를 분리할 수 있습니다.
장점은 큽니다. 일부 사용자에게만 새 기능을 열어 A/B 테스트나 점진적 rollout을 할 수 있고, 문제가 생기면 재배포 없이 기능을 끌 수 있습니다. 백엔드 API와 프론트엔드 UI가 동시에 바뀌는 작업에서도 호환 기간을 만들기 좋습니다.
if (flags.newCheckout) {
return <NewCheckout />;
}
return <LegacyCheckout />;하지만 flag는 방치되면 기술 부채가 됩니다. 임시 분기 코드가 오래 남아 테스트 케이스가 두 배로 늘고, 어떤 사용자가 어떤 경로를 타는지 추적하기 어려워집니다. 또한 보안 기능을 프론트엔드 flag만으로 숨기는 것은 안전하지 않습니다. 사용자가 코드를 볼 수 있기 때문입니다.
좋은 운영 기준은 flag마다 owner, 생성 목적, 제거 예정일을 두는 것입니다. 릴리즈가 안정화되면 old path를 지우고 flag도 제거해야 합니다. Feature Flag는 기능 스위치인 동시에 수명 관리가 필요한 운영 자산입니다.