박종훈 기술블로그

[구글 개발자는 이렇게 일한다] 릴리즈 안정적으로 수행하기 - 플래그 가드(flag guard)로 보호하기

내용

제품이 커질수록 서로 다른 개발 단계에 놓인 (완성된 정도가 다른) 여러 기능이 하나의 프로젝트에 공존할 확률이 높아집니다.

이러한 상황에서 지속적인 릴리즈를 안정적으로 수행하는 핵심은 엔지니어들이 ‘모든’ 변경에 플래그 가드를 넣도록 하는 것입니다. 플래그 가드는 플래그를 이용하여 제품의 코드를 기능 단위로 제어(활성화/비활성화)하는 기법입니다.

빌드 도구는 기능별 플래그를 확인하여 비활성화 된 기능은 해당 빌드에서 제외합니다. 릴리즈 빌드냐 개발용 빌드냐에 따라 다르게 설정할 수 있습니다. 이를 통해 완성되지 않은 기능 때문에 최종 사용자가 피해를 입지 않도록 막아줍니다.

새로운 코드가 충분히 준비됐다고 판단외면 다음 릴리즈에서는 이전 기능을 실행하는 코드를 막고 새로운 기능을 데뷔시킵니다. 제품 릴리즈에서 특정 기능을 독립적으로 제어할 수 있는 능력은 제품을 장기간 살아남게 하는 데 유리한 강력한 도구입니다.

출처 : 구글 개발자는 이렇게 일한다 - 24장 지속적 배포

생각

회사에서 겪고 있는 상황에서 적용하면 좋겠다는 생각이 들었다.

현재 회사에서는 변경사항을 release → stage 브랜치에 넣어 stage 환경에서 테스트 한 후 테스트를 잘 마치면 stage → master 로 merge 하여 prod 환경으로 최종 배포 하는 방식으로 작업을 진행하고 있다.

이 상황에서 생각보다 자주 stage 에 들어와는 있는데, QA가 끝나지 않아서 버전 관리 및 배포가 꼬이는 경우 가 발생된다. 조금 더 예를 들어보면 “A 라는 피처와 B 라는 피처가 모두 stage 에 있는데 A 라는 피처만 먼저 배포를 나가야 하면 어떻게 처리해야할까?” 라는 고민을 하게 된다.

물론 어떻게 고민해야할지는 고민해봐야할 부분이지만, 확실히 적용 하면 버전 관리 및 배포를 원활하게 할 수 있을 것 같다는 생각이 들었다.

기타

내용 정리 글