피드로 돌아가기
동적 사용자 분할을 활용한 새로운 A/B 테스트 시스템을 소개합니다
LINE Engineering
Backend

동적 사용자 분할을 활용한 새로운 A/B 테스트 시스템을 소개합니다

LINE Plus가 사용자 세그먼트 기반 동적 분할 기법을 도입해 특정 사용자군만 대상으로 하는 A/B 테스트 시스템 구축

2025년 12월 5일8intermediate

Context

기존 A/B 테스트 시스템은 무작위 사용자 분할 기반으로만 작동하므로, 특정 지역·OS·사용자 등급 같은 세그먼트를 대상으로 한 개인화된 테스트가 불가능했다. 전체 사용자를 대상으로 하는 일반적인 테스트만 가능하면서 머신러닝 모델 성능 검증이나 특정 유저 그룹의 반응 확인 같은 고도화된 테스트 시나리오를 지원할 수 없었다.

Technical Solution

  • 타겟팅 시스템 구축: HDFS에서 Spark로 사용자 정보를 추출해 AWS S3 호환 오브젝트 스토리지에 저장하고, Redis에 user_id-segment_id 키-값으로 세그먼트 멤버십 관리
  • 세그먼트 연산 지원: Spark 관계형 DB의 union(), intersect(), subtract() API로 AND/OR 조건, 합집합, 차집합 연산 지원
  • 설정 저장소 도입: A/B 테스트 정보를 Central Dogma 설정 리포지터리에 JSON 형식으로 저장해 버전 관리 및 배포 추적 가능하게 구성
  • 테스트 그룹 할당 로직: Test Group Assigner가 Central Dogma에서 테스트 설정 조회 → Redis에서 사용자-세그먼트 매핑 확인 → 해당 그룹의 데이터 fetch → 클라이언트 응답
  • 하이브리드 분할 방식: 사용자 세그먼트 기반 분할과 사용자 아이디 해시값 기반 무작위 분할 모두 지원해 선택적으로 적용 가능
  • 테스트 결과 추적: Test ID와 할당된 테스트 그룹 정보를 Log Store에 저장해 사후 대시보드 분석용 데이터 확보

Impact

아티클에서 정량적 성과 수치가 명시되지 않음.

Key Takeaway

A/B 테스트 시스템을 설계할 때 무작위 분할만으로는 부족하며, 특정 사용자 세그먼트를 Redis 캐시로 빠르게 조회하고 Central Dogma 같은 설정 저장소로 테스트 메타데이터를 관리하면 세그먼트 기반 개인화 테스트가 가능해진다. 이를 통해 기존 무작위 분할의 단순성을 유지하면서도 고급 테스트 시나리오를 동시에 지원할 수 있다.


특정 사용자 세그먼트(신규 사용자, 헤비 유저, 특정 지역 거주자 등)에 대해 A/B 테스트를 실행하는 서비스에서, 사용자 특성 데이터를 오브젝트 스토리지에 미리 준비해두고 Redis로 세그먼트 멤버십을 관리하면 Test Group Assigner가 요청 시점에 O(1) 조회로 사용자 할당을 결정할 수 있으며, 이를 통해 세그먼트별로 독립적인 테스트 결과를 수집하고 비교할 수 있다.

원문 읽기