쉬운·기술사전비유로 이해하는 AI·개발 용어
더 알아보기

피처 플래그

Feature Flag

피처 플래그는 새 코드를 배포하지 않고도 기능을 켜고 끌 수 있는, 운영 중인 앱 내부의 스위치예요.

피처 플래그 개념 다이어그램

위험한 기능을 배포하는 가장 안전한 방법은, 꺼진 상태로 배포한 다음 10명에게만 켜고 지켜보는 거예요.

피처 플래그(feature flag)는 운영 중인 앱 내부에 있는 스위치예요. 새 코드를 배포하지 않고도 기능을 켜고 끌 수 있어요. 기능은 '다크(dark)' 상태로 배포돼요. 이미 만들어져 있지만 보이지 않는 채로 대기하고 있다가, 원할 때 원하는 사람에게만 켤 수 있죠.

조광기(디머 스위치). 일반 전등 스위치는 켜지거나 꺼지거나 둘 중 하나예요. 배선을 바꾸려면 전기를 끊고 전기기사를 불러야 해요. 그게 재배포(redeploy)예요. 피처 플래그는 출시 전에 미리 설치해 둔 조광기예요. 새 기능을 방의 10%에만 켜고, 불꽃이 튀는지 지켜보다가, 50%로 올리고, 뭔가 탄 냄새가 나면 즉시 0으로 내릴 수 있어요. 전기기사도 필요 없고, 전기를 끊을 필요도 없고, 재배포도 없어요. 배선은 이미 벽 안에 있으니까요. 손잡이만 돌리면 돼요.

그 손잡이가 가능하게 하는 것들, 실제 팀들이 피처 플래그에 의존하는 이유를 정리하면 이래요.

  1. 단계적 롤아웃. 사용자 1%에게만 기능을 켜고, 이후 10%, 그다음 전체로 확대해요. 각 단계마다 상태를 확인하고요. 문제가 생겨도 극히 일부 사용자만 겪은 셈이에요.

  2. 즉각적인 종료 스위치. 무언가 잘못되면 플래그를 뒤집어요. 기능이 사라져요. 롤백보다도 빠르고요. 아무것도 재배포하지 않고, 그냥 토글만 해요. 롤백은 앱 전체를 이전 버전으로 되돌리지만, 플래그는 기능 하나만 죽이고 나머지는 그대로 둬요.

  3. 미완성 작업의 안전한 배포. 팀은 절반만 만들어진 기능을 수개월째 브랜치에 쌓아 두는 대신, 꺼진 플래그 뒤에 숨겨 실제 앱에 합칠 수 있어요. 이미 거기 있지만, 준비될 때까지 보이지 않는 거예요.

  4. 사람마다 다른 것 보여주기. 플래그를 팀에는 켜고 고객에게는 끄거나, 베타 사용자에게만 켤 수도 있어요. 같은 앱인데, 사람마다 다른 문이 열리는 거예요.

이 개념이 앞선 두 개념 옆에 어떻게 자리하는지 보면 더 명확해요. 스테이징(staging)은 관객이 오기 전에 리허설해요. 롤백은 관객이 들어온 뒤 전체 공연을 빠르게 되돌려요. 피처 플래그는 그 둘보다 세밀해요. 라이브 관객에게 배포하면서도, 누가 새 장면을 보는지 정확히 제어하고, 극장 문을 닫지 않고도 그 장면을 뺄 수 있어요.

"플래그 뒤에 넣어"라는 말을 풀면 이래요. 배포하되, 종료 스위치를 달아둬. 누가 보는지 우리가 통제하고, 문제가 생기는 즉시 죽일 수 있게. 팀이 숨 참고 배포하지 않아도 되는 방법이에요.

한 가지 솔직한 주의 사항이 있어요. 플래그는 쌓여요. 설치해 두고 잊어버린 조광기는 하나하나가 벽 속의 작은 쓰레기예요. 플래그를 적극 활용하는 팀은 죽은 플래그도 열심히 정리해요. 영구적으로 켜진 기능의 플래그는 그냥 헷갈리는 배선일 뿐이거든요.

피처 플래그는 출시 전에 미리 설치해 둔 조광기예요. 다크 상태로 배포하고, 10명에게 켜보고, 손잡이로 끄면 돼요. 전기기사는 필요 없어요.