pile·
인프라 / DevOps·11번가11번가·

Feature Flag - 안전하고 신뢰할 수 있는 배포로 나아가는 열쇠 🔑

11번가 Core플랫폼개발팀이 전사 공통 라이브러리를 Production 에 안전하게 내보내기 위해 Feature Flag 를 도입한 사례다. REST 호출을 gRPC 로 바꾸는 라이브러리를 배포하되 실제 전환은 런타임에 외부에서 켜고 끄도록 만들었다. 표준 인터페이스로 OpenFeature 를, 평가 엔진으로 flagd 를 쓴다.

핵심 포인트
  • 문제는 검증 환경에서 통과한 gRPC 전환 라이브러리가 대규모 트래픽에서도 문제없다는 확신이 없었고, 롤백 재배포에도 적지 않은 시간이 걸린다는 것이었다.
  • Feature Flag 는 특정 기능을 동적으로 켜고 끄는 조건부 코드 실행 메커니즘이다. 제어할 때마다 코드를 고쳐 배포할 필요가 없다는 점이 핵심이다.
  • Flag 상태를 애플리케이션 외부에서 불러오지 않으면 의미가 없다. Spring Profile 로 기능을 전환하면 매번 재배포가 필요해 Feature Flag 의 장점을 잃는다.
  • OpenFeature 는 2022년 6월 CNCF Sandbox 로 지정된 벤더 중립 표준으로, .NET, Go, Java, Node.js, PHP 등의 SDK 와 써드파티 Provider 연결을 제공한다.
  • flagd 는 OpenFeature 호환 백엔드로, Flag Configuration 을 계속 Watch 해 변경을 즉시 반영한다. 파일이나 Kubernetes Custom Resource, HTTP·gRPC 엔드포인트를 소스로 삼을 수 있다.
상세 정리
  • Feature Flag 의 용도는 다섯 가지로 정리된다. 긴급 장애 시 기능 즉시 비활성화, 시스템 이전 시 트래픽 제어, 여러 버전 실험, 사용자별 개인화, 일부 그룹부터 노출하는 점진적 릴리즈다.
  • 용어는 Feature Toggle, Feature Bits, Feature Flippers 로도 혼용된다.
  • 구현은 Flag 상태를 판단하는 부분과 그 상태로 분기하는 조건문으로 나뉜다. 런타임 제어가 되려면 호출될 때마다 Configuration 에서 상태를 가져와야 한다.
  • 11번가는 IDC 와 AWS EKS 를 함께 쓰는 하이브리드 인프라라, 배포 위치와 무관하게 같은 엔진을 보도록 EKS 클러스터에 flagd 이미지를 Pod 로 띄우고 모든 요청을 Ingress 로 처리했다.
  • OpenFeature 는 Operator 로 구성한 Helm Chart 도 제공한다. 특정 어노테이션이 붙은 Pod 에 flagd 를 사이드카로 주입해 Pod 별로 분리된 엔진을 둘 수 있다.
  • Flag 정의는 JSON 이나 YAML 로 쓰고 항목이 셋이다. state 는 사용 여부이며 비활성이면 Flag 가 없는 것과 같아 평가 시 예외가 난다.
  • variants 는 Flag 가 가질 수 있는 모든 값을 사람이 이해할 식별자에 매핑한 구조체이고, 모든 value 는 같은 타입이어야 한다. 실제 제어는 defaultVariant 를 바꾸는 식으로 한다.
  • targeting 은 조건문 기반 사전 정의 규칙으로, 평가 API 호출 시 함께 넘기는 Evaluation Context 를 활용한다. 사용자 이메일이나 host 같은 값으로 대상을 좁힐 수 있다.
  • Targeting Rules 로는 요청 단위 가중치를 줘 Canary 도 적용할 수 있다. 예컨대 특정 정보가 넘어오는 요청을 50, 20, 30 비율로 나눠 각기 다른 variant 를 주는 식이다.
  • 평가 값 타입은 Boolean, String, Integer, Double, Object 다섯이고, 값만 받는 단순 평가와 Flag Key, 값, 반환 이유, 에러 코드까지 담은 상세 평가를 고를 수 있다.
  • Hook 은 before, after, error, finally 네 단계 라이프사이클마다 실행할 로직을 붙이는 장치다. finally 는 언어에 따라 예약어라 다른 이름을 쓰기도 한다.
  • Spring Boot 적용은 OpenFeature SDK 와 flagd Provider 를 의존성에 넣고 평가용 Client 를 Bean 으로 등록하는 순서다.
  • 주의할 점으로 flagd Provider 는 별도 설정이 없으면 localhost:8013 으로 gRPC 요청을 보내며, 현재 애플리케이션과 flagd 사이는 gRPC 통신으로만 평가가 가능하다.
  • 결과적으로 배포 시점에는 defaultVariant 를 off 로 둬 HTTP 호출을 유지하다가, Flag 를 gRPC 로 전환하는 순간 엔진의 Sync 이벤트로 즉시 gRPC 호출로 바뀐다.
  • OpenFeature 와 flagd 는 초기 프로젝트라 기능 변화가 계속되고 있으므로 상세 사항은 저장소를 확인하라고 덧붙인다.
왜 읽나큰 전환을 Production 에 올리며 롤백 시간이 부담스러운 팀에게, 벤더 종속 없이 Feature Flag 를 구축하는 표준 스택과 실제 배포 구성을 보여주는 사례.
11번가
11번가 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    엔터프라이즈 보안 요구사항을 충족하는 프라이빗 Amazon Bedrock AgentCore 구축하기

    Amazon Bedrock AgentCore의 VPC egress 기능(2026년 4월 추가)을 활용해 온프레미스 LLM·사내 IdP·사내 MCP 서버에 인터넷 노출 없이 연결하는 방법을 다룬다. 규제 산업 엔터프라이즈가 기존 사내 자산을 그대로 유지하면서 Bedrock AgentCore를 안전하게 구축하기 위한 구성 가이드다.

    요약 이어보기
    #mcp#amazon-bedrock#vpc+2
  2. 인프라 / DevOps·gitlab-engGitLab Blog·

    OpenTofu와 Argo CD로 구성하는 GitLab 기반 AWS 제어 플레인

    GitLab을 단일 제어 플레인으로 삼아 OpenTofu로 AWS 인프라를 프로비저닝하고, Argo CD로 GitOps 기반 애플리케이션 배포까지 자동화하는 엔드투엔드 튜토리얼이다. VPC·EKS 클러스터 구성부터 Helm 기반 툴 설치, 샘플 앱 배포까지 모든 과정이 GitLab CI/CD 파이프라인으로 연결된다.

    요약 이어보기
    #kubernetes#aws-eks#gitops+2
  3. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Amazon Bedrock 기반 사내 LLM, 키 발급부터 비용 차단까지: F&F의 LiteLLM 게이트웨이 운영 사례

    패션 기업 F&F가 Amazon Bedrock과 LiteLLM 프록시를 결합해 구축한 사내 LLM 플랫폼 운영 사례다. API 키 셀프서비스 발급, 모델별 접근 승인 워크플로, 사용자·프로젝트별 예산 자동 차단까지 전 과정을 직접 구현한 아키텍처 결정과 운영 교훈을 공유한다.

    요약 이어보기
    #kubernetes#amazon-bedrock#litellm+2