이렇게 좋은 기능이 있었다고? 배포할 때 아직도 기도하며 밤샘 모니터링 하는 당신께 워라밸 지킴이, 기능 플래그를 소개합니다.
본 포스팅은 <하루 한번 이상 배포하는 팀의 비밀, 기능 플래그>의 시리즈 중 1부 입니다.
1부. 이렇게 좋은 기능이 있었다고? 기능 플래그를 소개 합니다.
2부. 기능 플래그로 점진 출시하기
3부. 기능 플래그로 원하는 타겟에게만 출시하기
배포할 때 혹시 기도를 하시나요?
배포 후 밤샘 모니터링이나 트래픽이 없는 새벽 시간까지 기다렸다가 배포를 해보신 경험이 있으신가요?
우리가 배포를 두려워 하는 이유, 바로 장애에 대한 우려 때문이죠.
배포하는 기능의 파급력과 배포에 대한 두려움의 정도는 비례합니다.
서비스 장애 발생으로 인한 고객들의 불편함, 항의, 롤백 및 문제 해결이 지연되는 상황에서 발생하는 비효율성과 스트레스…더 나아가 장애로 인한 금전 손실이 발생하기도 하고, 기사라도 날 경우 브랜드 신뢰도 하락까지. 플랫폼 기반 서비스에 종사하시는 분들이라면 적어도 한번 이상은 겪어보셨을 장애로 인한 악몽의 단면들입니다.
핵클팀의 슬랙 대화방에서도 종종 타 회사 서비스의 장애가 언급되곤 하는데요,
그럴때마다 누군가는 꼭 이 한마디를 합니다.
서비스 개편, 트래픽이 아주 큰 지면의 업데이트, 빅 프로모션 론칭 등 비즈니스 임팩트가 큰 프로젝트에서 배포 장애가 발생하면 수십, 수백억의 천문학적인 손실을 불러올 수도 있는 아주 위험한 인시던트인데, 확실한 장애 방지 수단을 마련하지 않고 불확실성에 운을 맡기는 개발팀, 그리고 기업들이 대부분인 것이 신기할 정도 입니다.
기능 플래그란 간단하게 표현하면 코드 배포와 기능의 출시를 분리할 수 있는 ON/OFF 스위치 입니다.
출시할 기능에 기능 플래그를 적용한 후 ON을 누르면 해당 기능이 서비스 사용자들에게 노출이 되고, 문제가 생겨서 롤백을 해야할 경우 ON 상태인 플래그를 OFF로 돌려놓기만 하면 바로 노출이 중단 되기 때문에 1초 만에 롤백이 가능 합니다.
기능 플래그가 단순히 ON/OFF 제어를 위한 스위치 정도의 역할만 한다면 굳이 3rd-party 솔루션을 사용하실 필요가 없겠죠. SDK 연동에 투입될 리소스나 직접 개발하시는 리소스나 별반 차이가 없을 테니까요.
기꺼이 도입할 가치가 있는 핵클 기능 플래그의 다양한 쓰임, 다음 편에서 소개 하도록 하겠습니다.