🌳 고급 deployment
Feature Flag가 뭔가요?
쉽게 이해하기
집에 있는 전등 스위치를 생각해보세요. 전기 공사를 다시 하지 않아도 스위치만 누르면 불을 켜고 끌 수 있죠. Feature Flag는 소프트웨어에서 기능을 켜고 끄는 스위치예요. 코드를 다시 배포하지 않아도 설정만 바꾸면 새 기능을 보여주거나 숨길 수 있어요.
핵심 정리
코드를 배포하지 않고도 특정 기능을 켜고 끌 수 있게 해주는 스위치예요.
자세히 알아보기
새 기능을 개발할 때 아직 완성되지 않았거나 테스트가 필요한 경우가 많아요. 예전에는 브랜치를 따로 만들어서 완성될 때까지 기다렸다가 한 번에 배포했는데, 이렇게 하면 코드 충돌도 많고 위험해요. Feature Flag를 사용하면 코드는 메인 브랜치에 합쳐두고, 설정으로 그 기능을 '끈' 상태로 배포할 수 있어요.
실무에서는 새 기능을 일부 사용자에게만 먼저 보여주는 'A/B 테스트'나 '카나리 배포'에도 많이 써요. 예를 들어 넷플릭스는 새 추천 알고리즘을 전체 사용자의 5%에게만 먼저 적용해보고, 반응이 좋으면 점점 늘려가는 방식으로 Feature Flag를 활용해요. 문제가 생기면 배포를 되돌릴 필요 없이 Flag만 끄면 되니까 안전하죠.
Feature Flag는 코드에 if문으로 구현되는 경우가 많아요. 예를 들어 'if (featureFlag.isEnabled("newSearch"))' 같은 코드로 새 검색 기능을 켜고 끌 수 있어요. LaunchDarkly, Firebase Remote Config 같은 도구들이 이런 기능을 제공해요.
다만 Flag가 너무 많아지면 코드가 복잡해지고 관리가 어려워질 수 있어요. 그래서 기능이 안정화되면 Flag를 제거하고 코드를 정리하는 것도 중요해요.