Review - 6 Months in Coupang
Kaden Sungbin Cho
쿠팡에서 추천 시스템 백엔드 엔지니어로 조인한지 6개월 차가 되었습니다.
다음 분기를, 내년을 준비하고자 지난 기간을 되돌아봅니다.
문화
자신의 상황에 따라 많이 차이가 있을 수 있으나, 제가 경험하고 느낀 바는 아래와 같습니다.
사용자 문제에 기반
대부분의 주요 프로젝트는 사용자 문제에 기반하여 주도됩니다. 여러 데이터를 참조하여 문제를 정의하고, 해결하고자 하는 바를 기술하며, 성공과 실패(롤백)은 어떤 기준일지를 작성한 1-pager를 통해 변경 프로젝트가 시작되고 팀이 구성됩니다.
실험 주도
문제 정의부터 성공과 실패의 정의 및 판단까지 모든 것은 데이터와 A/B 테스트를 기반으로 진행됩니다. 고도화되어 구현에 큰 비용이 발생하지 않는 A/B 테스트 플랫폼과 프로세스는 중요 핵심 자산으로 보이며, 그렇기에 모든 변경은 검증되어 개선이 인정될 때만 반영되고 그렇지 않다면 폐기됩니다.
(관련해 좋은 책, Ron Kohavi의 Trustworthy Online Controlled Experiments)
문제를 소유하지, 도메인을 점유하지 않음
주로는 도메인 오너가 도메인에 대한 변경을 진행하게 되지만, 리소스가 없다면 도메인 오너의 가이드 하에 특정 문제를 해결하기 위해 도메인 오너가 아닌 컨트리뷰터가 기여하기도 합니다. 물론, 특정 도메인 서비스에 대한 운영, oncall 등은 도메인 오너가 진행합니다.
하지만, 어떤 문제를 어떤 구성원이 P0로 해결하는 중이라면 그 문제를 위한 변경은 도메인에 구애받지 않고 '급한 구성원'이 해결할 수 있는 기회가 비교적 열려 있습니다.
Self AAR (Review)
추천 시스템은 다른 백엔드 시스템과는 조금 다르게 내부적으로 헤비한 데이터(Data-Intensive) 처리가 존재하고, 그 데이터 처리에 기반한 모델을 서빙한다는 특징이 있습니다. 유사한 도메인으로는 검색, ML 서빙 플랫폼와 같은 것들이 생각되는데요.
그렇기에 엔지니어로 관여하는 부분은 모델링, 파이프라이닝, 서빙, 그리고 기본적인 운영과 같은 4가지로 구분할 수 있습니다.
저는 지난 160일간 대략적으로 파이프라이닝, 서빙, 그리고 운영에 관여하였습니다.
파이프라이닝
특정 유저에 대해 특정 추천상품이라는 후보군들을 뽑아내기 위해 Offline으로 준비되는 데이터에 해당됩니다. Java, Scala, Python 등에 기반한 Spark으로 되어 있어, 일부 데이터를 추가하는 작업을 진행하였습니다.
서빙
실시간으로 추천 위젯과 위젯의 상품 리스트를 응답하는 서비스입니다. 주로 다양한 업스트림을 Aggregate하는 패턴으로 다양한 아규먼트를 받을 수 잇는 GRPC 엔드포인트를 제공합니다.
운영
모델링, 파이프라이닝, 서빙에 대한 유지와 모니터링이 해당됩니다. Spark 버젼을 마이그레이션하거나, AWS LB와 내부 클러스터 설정 구조를 변경하거나, CICD에 사용되는 서비스를 전사 정책에 따라 마이그레이션 하는 등의 작업을 진행합니다.
특징적으로는 Oncall이 일주일씩 로테이션이 되기에, Grafana alert에 따라 전화가 오면 핸들링하는 Oncall 프로세스를 진행하기도 합니다.
(원본: https://kadensungbincho.com/blog/backend/review-6-months-in-coupang)
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 12월 24일 오전 6:08
이해하지 못하는 내용이 90%는 되지만, 그래도 멋진 통찰이 담긴 회고인 것 같아요. 이번 분기 그리고 올해도 힘내봅니다.
@호잇감사합니다 :)