목록 보기
엘라스틱서치를 활용한 수평 확장 가능한 광고 서버 만들기
백엔드

엘라스틱서치를 활용한 수평 확장 가능한 광고 서버 만들기

버즈빌
버즈빌
2022년 12월 11일

두줄요약

복잡한 광고 타게팅 조회를 MySQL 조인에서 Elasticsearch inverted index 검색으로 전환했습니다. 단일 샤드·자동 레플리카 확장 구성으로 낮은 지연과 수평 확장을 확보했습니다.

문제 상황

  • 광고 객체 조회 시 7개 테이블에 걸친 조인과 100개 이상의 타게팅 조건
  • 읽기 요청이 쓰기 요청보다 압도적으로 많고, 변경 반영에는 짧은 지연 허용

해결 방법

  • MySQL 정규화 데이터 대신 광고 송출용 문서를 Elasticsearch에 인덱싱
  • 타게팅 조건을 inverted index의 집합 연산으로 처리
  • 필터링과 스코어링 로직을 결합한 광고 우선순위 산정

구조와 흐름

  • 활성 광고 중심의 단일 샤드와 노드별 레플리카 구성
  • auto_expand_replicas: 0-all로 노드 수에 맞춘 레플리카 확장
  • _only_local search preference로 불필요한 노드 간 요청 방지

성능/운영 포인트

  • P95 약 21ms 응답 시간과 painless script 기반 스코어링
  • 데이터 크기 대비 CPU 바운드 특성에 맞춘 고성능 인스턴스 선택
  • 오토스케일링 그룹과 ELB 기반의 수평 확장

다음 읽기

#Elasticsearch 주제를 이어서 읽기

엘라스틱서치를 활용한 수평 확장 가능한 광고 서버 만들기

리워드 광고 플랫폼 성장에 따라 MySQL 기반 광고 서버의 수평 확장 한계가 드러났습니다. 이를 해결하기 위해 엘라스틱서치로 전환해 타게팅과 송출 구조를 개선했습니다.

버즈빌
버즈빌
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...