Dev/Article
Feature Toggle(기능 토글)
by Luigi.yoon
2025. 6. 30.
Feature Toggle(기능 플래그 또는 기능 토글)은 소프트웨어 개발에서 코드 배포와 기능 릴리스를 분리 할 수 있게 해주는 기법입니다. DevOps, CI/CD, MLOps 등의 환경에서 널리 쓰이며, 런타임에 기능을 켜고 끌 수 있도록 하여 릴리스 리스크를 줄이고 A/B 테스트 등을 가능하게 합니다.
✅ Feature Toggle 이란?
기능의 실행 여부를 코드 안에서 조건문으로 제어 하도록 하는 기술
출처 : https://medium.com/@suman.maity112/introduction-to-feature-toggle-354873084572
java
if (featureToggle.isEnabled( "new_search" )) { // 새로운 검색 로직 실행 } else { // 기존 검색 로직 실행 }
✅ 주요 목적
목적
설명
안전한 릴리스
코드 배포는 하되, 실제 기능은 숨김
점진적 공개
사용자 그룹을 나눠 순차적으로 기능 활성화 (Canary, A/B Test)
롤백 대응
이슈 발생 시 즉시 기존 기능으로 전환 가능
환경 분리
QA, Staging, Production 환경에서 기능 ON/OFF 분리
실험
동일 코드 기반으로 다양한 기능 실험 가능
✅ 유형별 분류
유형
설명
예시
릴리스 토글
기능을 점진적으로 배포
betaUsersOnly
실험 토글 (Experiment Toggle)
A/B 테스트 목적
useNewLoginFlow
비즈니스 토글
유료 기능/무료 기능 제어
premiumUserAccess
퍼미션 토글
사용자 권한에 따라 제어
isAdminEnabled
운영/긴급 토글
이슈 대응용 토글
disableSearchTemporarily
✅ 장단점 비교
항목
장점
단점
CI/CD
기능이 완성되지 않아도 배포 가능
기술부채(토글 정리 안 하면 코드 누적)
실험
A/B 테스트 및 피드백 수집 용이
토글 로직이 복잡하면 버그 유입 가능
롤백
빠르게 기능 비활성화 가능
모든 코드에 if-else 문이 들어가 유지보수 어려움
사용자별 제어
그룹/권한 기반 기능 제어 가능
기능 활성화 정책 동기화가 어려움
✅ 구현 방식 비교
구현 방식
설명
장점
단점
코드 기반
if문/환경변수 등 직접 제어
빠르고 간단
코드 수정 필요, 배포 필요
DB 기반
DB에서 토글 상태 읽어옴
실시간 변경 가능
속도 저하, 복잡성 증가
외부 서비스 사용 (e.g. LaunchDarkly, Unleash, CloudBees)
SaaS 기반 대시보드 + API
UI로 관리, 통계 제공
비용, 외부 종속성
✅ 관련 기술/라이브러리
플랫폼
라이브러리 / 서비스
Java/Spring
FF4J , Togglz, Unleash
Python
Django Waffle, Flipper
Node.js
LaunchDarkly SDK, Unleash
SaaS 서비스
LaunchDarkly, ConfigCat, Split.io, CloudBees Feature Management
✅ MLOps나 DataOps에서의 활용
모델 서빙 토글 : A/B 테스트를 위해 v1 모델과 v2 모델을 번갈아 사용
데이터 파이프라인 단계별 토글 : 새로운 전처리 로직 적용 여부 실험
운영 토글 : 고비용 파이프라인 단계의 일시 비활성화
✅ 요약 비교
항목
Blue/Green, Canary 릴리스
Feature Toggle
배포 단위
인프라 전체
코드 내부
제어 방식
트래픽 라우팅
조건문/플래그
활용 목적
배포 안전성
기능 제어, 실험
적용 난이도
높은 편 (인프라 필요)
낮은 편 (코드 기반)
롤백 속도
느림
매우 빠름