릴리스 토글
Release Toggle
도구
아직 완성되지 않은 기능을 사용자 눈에 안 보이게 감춰 두려고 심는 피처 플래그의 한 용도입니다.
등장 배경
오래 걸리는 기능을 만들 때 예전에는 두 길밖에 없었습니다. 따로 갈라 둔 공간에서 다 만들고 나중에 한꺼번에 합치거나, 완성될 때까지 배포를 멈추는 것입니다. 갈라 둔 코드는 본줄기가 바뀔 때마다 멀어지고, 배포를 멈추면 상관없는 작업까지 같이 기다립니다.
페이지덱이 새 편집기를 만들 때 겪었습니다. 태오가 6주 동안 따로 작업했고, 그사이 본줄기의 문서 저장 구조가 바뀌었습니다. 합치는 데 사흘이 걸렸고 그동안 나온 오류는 새 편집기와 무관한 것들이었습니다.
릴리스 토글은 순서를 바꿉니다. 미완성 코드를 매일 본줄기에 합치되, 사용자에게 보이는 스위치는 꺼 둔 채 배포합니다. 코드는 서버에 있고 화면에는 없는 상태입니다.
해결하는 문제
합치는 일과 사용자에게 보여 주는 일을 떼어 놓아 세 가지가 풀립니다.
- 긴 갈래가 사라집니다. 반쯤 만든 편집기도 매일 본줄기에 들어가니 멀어질 시간이 없습니다. 사흘이 들던 합치기가 하루 몇 분으로 나눠집니다.
- 배포가 멈추지 않습니다. 새 편집기가 미완성이어도 같은 코드에 든 다른 수정은 그대로 나갑니다. 한 기능이 나머지를 붙잡아 두지 않습니다.
- 켜는 시점을 개발 완료와 분리할 수 있습니다. 코드가 3주 전에 준비됐어도 스위치는 발표에 맞춰 켭니다. 준비가 덜 됐는데 날짜가 오면 켜지 않으면 됩니다.
수명은 짧게 잡습니다. 전원에게 열린 뒤에는 분기와 스위치를 걷어내고 옛 경로를 지웁니다. 심을 때 치울 날짜를 함께 적고, 그 날짜가 지나면 담당자에게 알림이 가도록 걸어 둡니다. 남겨 두면 다음 사람이 어느 경로가 살아 있는지 확인하는 데 시간을 씁니다.
대신 켠 상태와 끈 상태를 둘 다 확인해야 합니다. 꺼진 경로를 아무도 안 본 채 두 주가 지나면, 스위치를 켜는 날에 옛 화면이 깨져 있는 것을 발견하게 됩니다.
실무 용례
"일단 릴리스 토글 뒤에 넣고 매일 합치죠. 6주짜리 갈래는 다시 만들지 맙시다."
미완성 코드를 감춘 채로 본줄기에 넣자는 제안입니다.
"코드는 지난주에 다 나갔어요. 스위치만 아직 안 켠 상태입니다."
배포와 공개가 분리돼 있다는 설명입니다.
"이 플래그 치울 날짜가 지났는데요. 이번 주에 걷어냅시다."
수명이 끝난 스위치를 정리하자는 지적입니다.
페이지덱은 새 편집기를 이 방식으로 다시 만들었습니다. 태오가 스위치를 꺼 둔 채 매일 합쳤고, 지현이 사내 계정에만 먼저 켜서 두 주 동안 썼습니다. 그 뒤 아주 작은 집단에만 먼저 열어 이상을 살피는 카나리 릴리스로 1퍼센트에게 열었습니다. 전원에게 열린 날 태오가 플래그를 걷어냈습니다.
자주 헷갈리는 용어
같이 보면 좋은 페이지
마지막 업데이트 2026-09-16