프론트엔드 개발자가 기능 플래그를 활용하는 법
서비스

프론트엔드 개발자가 기능 플래그를 활용하는 법

기능 플래그란 무엇인가요? 핵클 개발자, Mia님이 기능 플래그는 왜 필요한지, 어떻게 활용할 수 있는지 알려드립니다.

Mia
,
Front-end Engineer
May 26, 2022
콘텐츠 공유

안녕하세요 핵클의 프론트엔드 엔지니어 Mia입니다.

핵클에서는 개발인력이 늘고 배포가 더욱 빈번해지면서 1인당 월 평균 10건 정도씩 새로운 기능 플래그가 생성되고 있습니다. 특히 프론트엔드 배포에는 기능 플래그를 꼭 적용하려고 합니다.

기능 플래그가 무엇이길래 핵클에서 이렇게 활발히 사용하고 있을까요? 핵클에서 기능 플래그를 활용하는 방법과 함께 기능 플래그 도입이 가져다주는 효과들을 소개하고자 합니다.

기능 플래그란 무엇인가요?

기능 플래그란 쉽게 말해 제품 내에서 특정 기능을 껐다 켰다 할 수 있는 스위치입니다. 새 코드를 배포할 필요없이 핵클 대시보드의 스위치를 이용해 기능 활성화 여부를 관리할 수 있습니다. 또한 특정 사용자에게만 보이도록 하는 타겟팅과 트래픽 비율 조정도 가능합니다. [👉🏻기능 플래그 소개 페이지 바로가기]

핵클 이상 감지

핵클에서 기능 플래그를 활용하는 법

1. 테스트

QA 효율 극대화

기능 플래그는 출시할 기능이 보여질 대상을 타겟팅할 수 있습니다. 핵클에서는 이를 활용하여 QA 인원들을 개별 타겟팅하여 테스트를 진행합니다.

개별 타겟팅이란 device ID 등을 이용하여 개별 사용자를 타겟팅하는 방법입니다. QA 용도인 경우 QA팀에서 사용하고 있는 device ID들을 등록할 수 있습니다. 또한 QA팀처럼 자주 사용되는 식별자들은 그룹으로 저장해두면 일일이 사용자들을 등록할 필요없이 클릭 한 번으로 적용 여부를 관리할 수 있습니다.

이렇게 되면 개별 타겟팅된 사용자에게만 기능이 노출되므로 다른 인원에게 영향을 주지 않고도 새로운 기능을 테스트할 수 있습니다. 또한 기능을 배포할 수 있는 서버의 수가 제한적일 때 다른 기능 QA가 끝날 때까지 기다릴 필요없이 기능 플래그를 활용하여 동시에 여러 기능을 테스트할 수 있습니다. 테스트 코드가 개발자와 제품에 자신감을 주듯 기능 플래그 역시 최대한의 테스트를 도와 제품에 신뢰도를 높입니다.


핵클 QA테스트

운영환경에서의 테스트

개발 환경에서 정상 작동하던 기능이라도 운영 환경에서 예상치 못한 이슈가 발생하기도 합니다. 개발 환경은 실제 고객이 사용하는 제품 환경과 완벽히 일치하지 않기 때문입니다. 그러므로 운영 환경에서 테스트를 할 수 있다면 제품의 안정성을 높이고 고객과의 신뢰를 지킬 수 있을 것 입니다. 그러나 운영 환경에 배포한 기능은 즉시 고객에게 노출되므로 테스트가 쉽지 않은데요.

기능 플래그의 사용자 타겟팅을 이용하면 고객이 사용하는 운영 환경에서의 테스트도 가능합니다. 사용자 타겟팅이란 조건을 설정하여 해당 조건에 부합하는 사용자들에게 기능을 노출하는 기능을 말합니다. 이를 이용하면 운영 환경에 출시한 후에도 회사 내부에서만 기능을 확인할 수 있게 할 수 있습니다.

핵클은 개별 타겟팅으로 QA를 마친 뒤 사용자 타겟팅으로 핵클 전사에 기능을 우선 노출합니다. 그리고 고객이 사용하는 제품과 동일한 환경에서의 테스트와 피드백을 진행한 뒤 기능을 출시합니다.

기능플래그 설정화면

2. 장애 대응

코드를 열심히 작성하고 테스트도 완벽하게 했을지라도 예상치 못한 장애는 발생할 수 있습니다. 장애가 발생하는 것을 원천적으로 차단할 수는 없지만 장애에 대응하는 과정을 통해서 신뢰를 지킬 수 있습니다. 기능 플래그는 장애가 발생하더라도 영향 범위를 최소화하고 빠르게 복구할 수 있게 합니다.


점진적 출시 및 모니터링

기능 플래그가 없다면 배포 과정에서 즉시 고객에게 모든 기능이 노출됩니다. 핵클은 대부분의 기능에 기능 플래그를 적용해 배포를 진행합니다. 배포와 출시를 분리할 수 있어 개발자의 부담을 덜어줄 뿐 아니라 트래픽 비율을 점진적으로 늘려 기능을 출시할 수 있습니다.

이는 중간에 문제 상황이 발생하더라도 장애 영향도를 최소화할 수 있는 방법입니다. 특히 신규 모듈이나 외부 시스템 등을 처음 도입할때 운영 환경에서 이들이 전체 트래픽을 다 견딜 수 있을지 알 수 없기 때문에 기능 플래그를 이용하여 점진적으로 트래픽을 늘려가면서 적용시켜야 합니다.

신속한 장애 대응

핵클이 기능 플래그를 사용하는 가장 중요한 이유입니다. 기능 플래그가 적용된 기능이라면 장애 발생시 대시보드에 스위치를 OFF로 변경함으로써 몇 초만에 장애 상황을 종료시킬 수 있습니다. 기능 플래그를 사용하지 않았더라면 장애 탐지 후 롤백을 진행해야 합니다. 이전 버전으로 다시 배포하는 과정에서 소요되는 시간동안 장애가 그대로 노출될 수밖에 없습니다.


장애 후속조치에도 차이가 있습니다. 기능 플래그가 적용된 상태라면 개발팀만 개별 타겟팅하여 문제의 기능을 운영 환경에서 재현할 수 있습니다. 원인을 찾아 수정하기 용이합니다. 그러나 기능 플래그를 사용하지 않는 조직이라면 실제 문제가 발생한 운영 환경이 아닌 개발 환경에서 문제 기능을 재현해야 하고 그 과정에서 많은 시간을 쓰기도 합니다.


3. 기능 관리

제품이 고도화되면 고객별로 다른 기능을 제공해야 하는 경우가 발생합니다. 기능 플래그의 사용자 타겟팅을 이용하면 손쉽게 특정 플랜 사용자에게만 해당 기능을 오픈할 수 있게 됩니다.

핵클에서는 프로 플랜 고객이 사용하는 고급 기능들을 기능 플래그를 사용하여 관리하고 있습니다. 정책이 변경되어 조건을 변경해야 할 때도 로직을 수정하여 코드를 다시 배포할 필요없이 핵클 대시보드에서 조건을 변경하여 편리하고 신속하게 반영할 수 있습니다. 또한 계절별 프로모션 배너, 월별 웨비나 신청 주간 등 특정 기간에 주기적으로 노출되는 기능이 있는 경우에도 유용합니다. 노출 여부를 코드를 매번 배포하여 관리할 필요없이 기능 플래그로 간단하게 관리할 수 있습니다.

테크 기업에 기능 플래그가 필요한 이유

테크 기업의 경쟁력은 빠른 이터레이션에서 옵니다. 핵클 역시 ‘속도가 생존을 결정한다.’는 원칙을 가지고 있는데요. 하루에도 수백건의 배포가 이루어지는 기업의 성장 속도는 그렇지 않은 기업보다 훨씬 빠르기 때문입니다.

빠른 개발과 잦은 배포는 고객에게 빠르게 더 많은 가치를 전달하지만 필연적으로 장애 위험을 높이기도 합니다. 크리티컬한 장애는 제품에 대한 신뢰를 떨어뜨리고 이는 새로운 기능을 개발하는 것만으로 회복하기 힘든 영역입니다. 빠른 이터레이션에 장애 리스크 관리가 필히 수반되어야 하는 이유입니다.

핵클은 속도를 저하시키지 않으면서 고객과의 신뢰를 지킬 수 있는 방법으로 기능 플래그를 개발하였고, 핵클 제품 내에서도 적극 활용하고 있습니다. 핵클의 기능 플래그를 활발히 사용하고 있는 클래스101에서도 ‘애자일 개발을 지향하는 조직이라면 꼭 써야하는 기능’이라고 이야기 합니다. [👉🏻클래스101 인터뷰 보러가기]
핵클 기능 플래그 도입은 개발자로 하여금 배포로 인한 부담을 덜고 장애 리스크를 낮출 수 있게 합니다. 또한 빠르게 성장하고자 하는 기업에서는 고객과의 신뢰를 지키고 안정적인 성장을 이어나가실 수 있습니다.

트위터에 공유하기
제품 주도 성장에 필요한 모든 기능을
All-in-One 플랫폼 핵클과 함께 시작해보세요!
무료 체험 시작하기
콘텐츠 공유
인터뷰에 나온 회사처럼,
빠르게 성장하고 싶다면 핵클과 함께 하세요!
핵클 드림팀 신청하기

성장의 시작, 핵클이 함께합니다!

비대면 바우처를 통해 70% 할인된 금액으로 핵클을 시작해보세요.
자세히 알아보기

👀 이런 콘텐츠는 어때요?