피드로 돌아가기
The Stale Feature Flag We Deleted That Turned a Feature Back On
Dev.toDev.to
Backend

Feature Flag 삭제 시 Default 값 설정 오류로 인한 프로덕션 장애 사례 분석

The Stale Feature Flag We Deleted That Turned a Feature Back On

Jake Lundberg2026년 6월 22일5intermediate

Context

장기간 미사용 상태인 Feature Flag를 단순 정리 대상으로 판단하여 제거함. Flag 삭제가 단순 코드 정리(Tidying)가 아닌 런타임 동작을 변경하는 배포(Deploy)임을 간과한 설계상 허점 발생.

Technical Solution

  • Flag 제거 시 코드 내 Fallback 로직의 Default Value가 true로 설정되어 기능이 의도치 않게 활성화된 구조 파악
  • 상호 의존 관계에 있는 API-Frontend 간의 분산된 Flag 설정으로 인한 Invisible Dependency 발생 및 충돌 확인
  • Flag 제거 프로세스를 단순 삭제가 아닌 런타임 영향도 분석이 포함된 정식 변경 요청(PR) 절차로 격상
  • Flag 생성 시점에 제거 태스크를 동시에 생성하여 기술 부채의 가시성을 확보하는 큐잉(Queuing) 전략 도입
  • 장기간 미실행된 코드 경로의 갑작스러운 활성화를 감지하는 모니터링 체계 필요성 식별

- Flag 삭제 전 모든 읽기 지점의 Fallback Value 확인 및 의도한 동작 일치 여부 검증 - 서로 다른 레포지토리/서비스 간 연관된 Flag 관계를 명시적으로 기록 및 관리 - Flag 생성과 동시에 제거 티켓을 생성하여 Cleanup 주기 강제화 - 휴면 코드(Dormant Code)의 실행 재개 시 알림을 보내는 Observability 설정 검토

원문 읽기