기능 플래그
feature flag
코드를 다시 배포하지 않고도 특정 기능을 켜고 끌 수 있게 만든 스위치
쉽게 말하면
기능 플래그는 새로 만든 기능을 전체 프로그램을 다시 짜지 않고도 켜거나 끌 수 있게 해두는 스위치다. 건물의 두꺼비집을 떠올리면 된다. 전기를 통째로 내리지 않아도 방 하나의 불만 따로 끌 수 있게 회로를 나눠 둔 것처럼, 개발자는 새 기능 하나만 조용히 꺼버릴 수 있도록 코드 안에 미리 손잡이를 심어 둔다.
이 손잡이가 왜 중요하냐면, 출시 전에는 모든 문제를 다 걸러낼 수 없기 때문이다. 화면에 내놓은 뒤에야 발견되는 문제도 있다. 이때 손잡이가 있으면 그 기능만 조용히 끄고 나머지는 그대로 돌아가게 할 수 있다. 손잡이가 없으면 프로그램 전체를 다시 만들어서 올려야 하니, 문제를 알아챈 순간과 실제로 고쳐지는 순간 사이에 시간이 훨씬 오래 걸린다.
그래서 새 기능을 일부 사용자에게만 먼저 보여주고 반응을 살피거나, 문제가 생기면 몇 시간 안에 되돌리는 일이 가능한 서비스는 대개 이 스위치를 미리 만들어 둔 곳이다. 반대로 이 구조 없이 기능을 내놓은 서비스는 문제가 생겨도 빠르게 손쓰기 어렵다.
기사에서 이렇게 나와요
기사는 「기능 플래그로 켜고 끄는 구조가 없으면 하루 만에 내릴 수 없다」고 짚는다. 구글이 어스 AI 기능을 공개 하루 만에 철회할 수 있었던 건 이 스위치를 미리 만들어 뒀기 때문이라는 뜻이다.
오해하기 쉬운 점 하나: 기능 플래그가 있다고 해서 문제가 애초에 생기지 않는 건 아니다. 이건 문제가 생겼을 때 빨리 되돌릴 수 있게 해주는 장치일 뿐, 출시 전 검증을 대신해 주지는 않는다.
직접 해보기
평소 쓰던 앱에서 어느 날 갑자기 새 기능이 나타났다가 며칠 뒤 조용히 사라진 적이 있다면, 그게 기능 플래그로 켜고 끈 흔적일 가능성이 크다. 앱 업데이트 없이 기능이 생기거나 없어졌다면 코드 배포가 아니라 스위치 조작이었다고 보면 된다.
