전체 목록
운영Medium#430

Feature Flag를 사용하면 어떤 장점이 있고 운영 시 무엇을 주의해야 하나요?

#운영#FeatureFlag#배포#릴리즈

답변 포인트

배포와 릴리즈를 분리하는 장점, 오래된 flag가 기술 부채가 되는 문제를 함께 보세요.

정답 및 해설

빠른 요약

Feature Flag는 코드를 배포해두고도 기능 노출 여부를 설정으로 제어하는 방식입니다. 덕분에 배포(deploy)와 릴리즈(release)를 분리할 수 있습니다.

Feature Flag는 코드를 배포해두고도 기능 노출 여부를 설정으로 제어하는 방식입니다. 덕분에 배포(deploy)와 릴리즈(release)를 분리할 수 있습니다.

장점은 큽니다. 일부 사용자에게만 새 기능을 열어 A/B 테스트나 점진적 rollout을 할 수 있고, 문제가 생기면 재배포 없이 기능을 끌 수 있습니다. 백엔드 API와 프론트엔드 UI가 동시에 바뀌는 작업에서도 호환 기간을 만들기 좋습니다.

TypeScript
if (flags.newCheckout) {
  return <NewCheckout />;
}
return <LegacyCheckout />;

하지만 flag는 방치되면 기술 부채가 됩니다. 임시 분기 코드가 오래 남아 테스트 케이스가 두 배로 늘고, 어떤 사용자가 어떤 경로를 타는지 추적하기 어려워집니다. 또한 보안 기능을 프론트엔드 flag만으로 숨기는 것은 안전하지 않습니다. 사용자가 코드를 볼 수 있기 때문입니다.

좋은 운영 기준은 flag마다 owner, 생성 목적, 제거 예정일을 두는 것입니다. 릴리즈가 안정화되면 old path를 지우고 flag도 제거해야 합니다. Feature Flag는 기능 스위치인 동시에 수명 관리가 필요한 운영 자산입니다.

관련 질문

같은 카테고리/태그 기준