UStackUStack
OpenFlags icon

OpenFlags

OpenFlags는 오픈소스 셀프호스팅 피처 플래그 시스템으로, 앱 SDK에서 로컬 평가와 REST 제어 플레인을 통해 안전한 점진적 배포를 지원합니다.

OpenFlags

OpenFlags란?

OpenFlags는 오픈소스 셀프호스팅 피처 플래그 시스템으로, 팀이 점진적 배포와 더 안전한 롤아웃으로 변경 사항을 배포할 수 있도록 설계되었습니다. 제어 플레인과 SDK를 제공하여 애플리케이션 코드에서 플래그를 로컬로 평가하고 변경마다 재배포 없이 기능 동작을 활성화할 수 있습니다.

OpenFlags의 핵심 목적은 퍼센트 롤아웃, 타겟팅 활성화, 제어된 활성화와 같은 릴리스 워크플로를 지원하면서 플래그 평가를 저지연으로 유지하고 런타임 소유권을 팀 인프라 내에 두는 것입니다.

주요 기능

  • 셀프호스팅 플래그 인프라: 호스팅 플랫폼에 의존하지 않고 플래그 저장소, 타겟팅 로직, 런타임 소유권을 자체 인프라에 유지하세요.
  • 타입드 SDK를 통한 로컬 평가: TypeScript 패키지를 사용해 앱에서 플래그를 평가하며, 코드 내 로컬 실행으로 빠르고 예측 가능한 체크를 목표로 합니다.
  • 점진적 배포 제어: 모든 사용자에게 한 번에 변경을 활성화하는 대신 제어된 슬라이스(퍼센트 롤아웃 포함)로 기능을 롤아웃하세요.
  • 세밀한 타겟팅: 특정 사용자 타겟팅에 따라 플래그를 활성화하여 서로 다른 코호트가 다른 기능 동작을 받을 수 있습니다.
  • 집중된 표면적의 REST 제어 플레인: 모노레포의 일부로 서버, 대시보드, SDK, 문서를 위한 전용 역할을 가진 간단한 REST API를 사용해 플래그 제어 플레인과 관리를 처리하세요.
  • 토글 및 롤아웃 관리 대시보드: React 기반 관리 UI로 팀이 릴리스를 토글하고 롤아웃 구성을 관리할 수 있습니다.

OpenFlags 사용 방법

  1. 문서와 퀵스타트로 시작하세요: 제공된 문서를 사용해 서버, 대시보드, SDK를 환경에 설정하세요.
  2. 앱에서 SDK 클라이언트 생성: API URL, 프로젝트 식별자, 사용자 식별자로 클라이언트를 초기화하세요.
  3. 애플리케이션 코드에서 로컬 플래그 평가: SDK를 사용해 플래그 활성화 여부를 확인(flags.isEnabled("flag_name") 호출 예시)하고 조건부 동작을 렌더링하세요.
  4. 제어 플레인에서 롤아웃 구성 관리: 대시보드 또는 REST API를 사용해 퍼센트 기반 활성화나 타겟팅 활성화 등의 롤아웃 동작을 정의하세요.

사용 사례

  • 새 사용자 경험 점진적 활성화: UI나 워크플로를 피처 플래그로 게이트하고 모든 트래픽 대신 제어된 사용자 하위 집합에 활성화하세요.
  • 타겟팅 사용자 대상 베타 테스트 실행: 사용자 식별자를 타겟팅해 특정 코호트에 기능 활성화, 그룹 간 동작 비교를 하면서 나머지는 영향을 받지 않게 하세요.
  • 퍼센트 롤아웃으로 릴리스 영향 범위 축소: 변경을 점진적으로(예: 사용자 35%) 롤아웃하고 애플리케이션 재빌드나 재배포 없이 롤아웃 동작을 조정하세요.
  • 성능 민감 앱에서 플래그 체크 빠르게 유지: 앱 내 로컬 평가를 사용해 기능 체크가 런타임 동안 저지연이고 일관되게 유지되도록 하세요.
  • 인프라 내 소유권 유지: 셀프호스팅 제어 플레인을 사용해 운영 및 감사 표면을 스택 내에 유지하세요.

자주 묻는 질문

  • OpenFlags는 셀프호스팅인가 클라우드 호스팅인가요? OpenFlags Cloud가 곧 출시될 예정이며, 현재 제공은 오픈소스 셀프호스팅으로 위치づけ됩니다.

  • 피처 평가는 어떻게 작동하나요? OpenFlags는 SDK를 사용한 로컬 평가를 지원하므로 플래그 체크가 앱 코드 내에서 발생하며 매 평가마다 원격 호출이 필요 없습니다.

  • 어떤 롤아웃 패턴을 지원하나요? 사이트에서 퍼센트 롤아웃, 세밀한 타겟팅, 제어된 활성화를 포함한 점진적 배포를 언급합니다.

  • OpenFlags는 어떤 컴포넌트를 포함하나요? 모노레포에 제어 플레인을 위한 Bun 기반 서버 API, React 기반 대시보드, TypeScript SDK 패키지, 문서가 포함됩니다.

  • SDK는 어떤 언어/프레임워크를 위해 설계되었나요? 사이트에서 JavaScript 우선 SDK 사용을 강조하며 Bun, React, Next.js, Vite, Node 앱 지원을 언급합니다.

대안

  • 관리형 피처 플래그 플랫폼 (SaaS): 일반적으로 플래그 관리를 호스팅 서비스에 중앙화합니다. OpenFlags의 셀프호스팅 제어 플레인에 비해 평가와 운영 소유권이 벤더 플랫폼에 더 의존적일 수 있습니다.
  • 인프라-as-code 기반 롤아웃 (전용 플래그 평가 없음): 팀은 배포, 라우팅 또는 구성 토글을 사용해 점진적 배포를 근사할 수 있습니다. OpenFlags와 달리 로컬 평가를 위한 전용 피처 플래그 SDK 워크플로를 제공하지 않습니다.
  • 다른 아키텍처의 오픈소스 피처 플래그 서비스: 대안 오픈소스 시스템은 유사한 개념(플래그, 타겟팅, 대시보드)을 제공할 수 있지만 SDK 접근 방식, 제어 플레인 API 설계 또는 로컬 평가 처리에서 다른 트레이드오프가 있습니다.
OpenFlags | UStack