핵클을 쓰면서 장애 대응과정이 훨씬 수월해졌습니다. 기능플래그는 애자일 개발을 지향하는 조직이라면 꼭 써야하는 기능입니다.
클래스101은 ‘모두가 사랑하는 일을 하며 살 수 있도록’ 이라는 비전을 가지고 2018년 3월 서비스를 론칭, 취미부터 머니, 커리어, 키즈 등 다채로운 카테고리의 약 3천개의 클래스를 선보이고 있습니다. 준비물까지 챙겨주는 플랫폼이라는 차별성과 크리에이터와 클래스메이트가 온/오프라인의 경계를 허물고 소통할 수 있는 환경을 만들어 가며 국내 No.1 온라인 클래스 플랫폼으로 크리에이터 이코노미를 선도하고 있습니다.
2022년 2월 초 기준 누적 클래스 3천개, 누적 회원수 382만명, 누적 크리에이터 수 11만 7천명, 누적 크리에이터 정산액 665억원의 제품 및 서비스를 책임지고 있는 클래스101 개발팀을 만나봤습니다.
Joy | 클래스101에서 커머스 파트 엔지니어링 매니저를 맡고 있는 Joy라고 합니다. 상품/재고관리, 결제, 정산, 멤버십 등 커머스를 위한 플랫폼을 만들고 있습니다.
Chad | 유저가 클래스를 구매한 이후의 경험을 담당하는 클래스메이트 플랫폼을 만들고 있는 엔지니어 Chad라고 합니다.
Joy | 클래스101은 분기별로 전사 OKR 을 설정합니다. 설정된 OKR을 바탕으로, 각 팀원들은 이 목표를 달성하기 위한 고민과 액션을 동료들과 함께 합니다.
현재 개발팀 내에서의 중요한 과제는 MSA, CI/CD라고 할 수 있는데요. 현재 분기의 구체적인 과제로는 모바일 경험 개선, 파이프라인 정비, 지속적인 코드 통합과 배포와 같은 것들이 있습니다. 전반적인 테크팀의 기술역량을 키우는데 집중하고 있습니다.
Chad | 클래스101 개발팀의 가장 크게 다른 점은 속도인 것 같아요. ‘빠르고 작게 실패하기'가 가능하도록 애자일한 개발 프로세스를 지향합니다. 👉🏻클래스101의 개발문화
Joy | 개발팀은 커머스플랫폼, 코어플랫폼, 클래스메이트 플랫폼, 크리에이터 플랫폼, 웹사이트 플랫폼 이렇게 5개의 팀으로 나뉘어있는데요. 각 팀엔 엔지니어링 매니저(이하 EM)가 존재합니다. PM은 각자 프로덕트를 담당합니다. 예를 들어, 101루틴의 경우 커머스쪽 정기결제 시스템과 수강쪽 결제 시스템을 사용하고 있기 때문에, PM은 여러 명의 EM과 협업하는 구조라고 볼 수 있어요. 대부분 PM은 1명의 EM과 협업하지만, 특정 상황에서는 여러 EM과 협업하는 경우도 있습니다. 서비스의 규모가 커지면서 서비스의 복잡도가 점차 증가하고 있습니다.
Joy | 저희 테크팀은 주기적인 배포를 지향합니다. 과거에는 데일리로 심지어는 하루에도 수 차례 배포가 나갔었는데요. 체계가 갖춰지지 않은 상태에서 잦은 배포로 인해 서비스의 장애가 굉장히 많이 발생했습니다. 이를 일차적으로 해결하기 위해서, 내부적으로 레디스(Redis)를 이용해 기능 플래그를 직접 만들어 사용했는데요. 기능 on/off를 통해 유저에게 기능을 출시할지 여부를 제어하는 용도로 사용했습니다.
당시 느꼈던 문제는 크게 2가지였습니다.
SaaS를 사용하게된 가장 큰 이유는 내부 리소스의 문제로 더 이상의 유지보수를 하기 어렵다는 점이었습니다.
Joy | 핵클 기능 플래그의 유저 타겟팅 기능을 유용하게 사용하고 있습니다. 사용 전 후, 유저 에이전트 기준으로 기능의 on/off 규칙을 세부 설정할 수 있는 것이 좋았는데요. 최근에 카카오페이를 결제수단으로 추가했는데, 인앱일 경우엔 해당 기능을 꺼두는 방식으로 기능 플래그를 활용했습니다. 기능의 on/off를 배포 없이도 핵클을 통해 세부적으로 할 수 있다는게 큰 장점인 것 같아요. 문제가 생겼을 때 롤백이 필요한 중요한 결정에는 항상 쓰고 있습니다.
Chad | 커뮤니티에 많은 기능들이 추가되서 바로 나가야하는 상황이 있었는데, 바로 배포하기에는 리스크가 크다고 판단했었어요. 그래서 핵클의 기능 플래그를 활용해서 배포를 진행했는데요. 핵클은 개발과 운영환경이 나눠져 있어서, 개발자 환경에서 테스트를 해보고 이상이 없음을 확인 후 자신감있게 배포할 수 있어서 좋았습니다.
Joy | 기능 플래그 적용이 되면서 QA분들이 핵클에 들어와서 기능을 on/off하면서 문제가 없는지 체크해주시는데, 이런 프로세스가 추가됐다는게 달라진 점일 것 같아요.
또 하나는 출시 이후 이슈에 즉각적으로 대응할 수 있다는 점인데요. 카카오페이 기능을 출시하고보니 인앱에 문제가 있어서 기능 플래그를 통해 인앱을 제외하는 방식으로 타겟팅을 바꾼 적이 있어요.
Joy | 사소하지만 사용자 입장에서는 크게 다가오는 사용성에서 핵클이 좋았어요. 예로는, 핵클은 A/B 테스트 실험키가 운영과 개발 값이 같은데요. 옵티마이즐리는 프로젝트를 2개 생성하고 각각 id가 달라서, 실험이 바뀌거나 세팅을 잘못하면 훨씬 더 공수가 많이 들었어요. 옵티마이즐리를 써본 경험이 있어서, 간단한 세션만으로도 핵클을 업무에 적용하는데는 큰 문제는 없었어요.
Joy | 핵클을 활용하는 데 직군별 역할이 명확하게 구분되어 있는데요. 대시보드 상에서 QA들은 롤설정 조정하고, PM들은 A/B 테스트 설계와 해석, 엔지니어들은 테스트키를 가지고 스펙대로 구현하는 걸 집중하고 있습니다.
핵클을 쓰면서 장애 대응과정이 훨씬 수월해졌습니다. 클래스101은 다양한 마이크로 서비스가 배포되고 있고, 롤링 업데이트를 수행하고 있어요. 때문에 문제가 발생하였을 때, 문제 지점을 찾아 롤백할 때 수십분의 시간이 걸리는데요. 기능 플래그 없이 배포된 건의 경우, 이슈 대응이 즉각적으로 이루어지기 조금 어렵습니다. 하지만 기능 플래그로 배포된 건의 경우, 문제가 생기면 바로 기능 플래그를 Off 하면 되기 때문에 장애 대응이 훨씬 쉬워졌죠. 그래서 기능 플래그는 개발팀에서 필수적으로 사용해야 하는 기능이라고 생각해요.
또한 어떠한 부분에 장애가 있는지 여부를 파악하는데 있어서도 조금 더 쉬워졌는데요. 만약 배포 후에 이슈가 발생하면 각 배포사항에 해당하는 Jira 티켓에서 기능 플래그 ID를 확인할 수 있어서, 이슈의 원인이 된 배포사항과 관련된 기능 플래그를 핵클 대시보드에서 제어하는 방식으로 고객 경험을 관리할 수 있습니다. 중요한 배포 건은 기능 플래그가 적용되기 때문에, 이슈 확인시 기능 플래그를 먼저 확인하는 편이에요.
Chad | 기능 플래그를 처음 사용해보시는 개발자분들도 굉장히 쉽게 업무에 활용하실 수 있을거라고 확신해요. 클래스101 합류한 시점에 이미 내부에서 핵클로 변경된 사항을 빌드업을 해둔 상태여서, 편하게 사용했었는데요. 핵클은 UI가 굉장히 직관적이고, 필요한 건 툴팁을 통해서도 충분히 확인할 수 있어서 편하게 사용할 수 있어요.
Joy | 엔지니어링 쪽의 목표는 회사가 가는 방향에 어느 정도 align되어있지만 특히 뛰어난 기술조직이 되고자합니다. 구체적으로는 기술 스택들을 잘 쓰는 조직이 되자, 역량을 갖추자, 조금 더 제품을 빠르게 개선하기 위해서 진정한 CI/CD를 해보자하는 것들이구요. 업무적으로는 외부툴을 개발자들이 잘 숙지하고, 잘 쓸 수 있는 상태가 되었으면 합니다. 단기적으로는 마이크로 서비스를 제대로 운영하는 것이 큰 목표입니다. 이것을 통해 모바일 경험 개선을 향해 나아갈 예정입니다. 이 과정에서 핵클이 유용한 툴이 될 것이라고 생각합니다.
1️⃣ 클래스101이 사용하는 기능플래그가 궁금하시다면 핵클 서비스 가이드를 통해서 자세한 내용을 확인해보세요!
2️⃣ 지금 바로 무료로 시작해보세요! 핵클은 스타트업 무료플랜을 제공합니다.