목록 보기
광고 서비스 개발 연대기
아키텍처

광고 서비스 개발 연대기

브랜디
브랜디
2022년 5월 18일

두줄요약

광고 송출과 로그 수집의 병목을 해결하기 위해 도메인별 MSA 구조를 설계했습니다. Kotlin Coroutine과 Kafka 토픽 파이프라인으로 비동기 처리와 장애 격리를 강화했습니다.

문제 상황

  • 모놀리틱 광고 송출 서비스의 과도한 역할 집중, 느린 응답, 지면 데이터 중복
  • 로그 수집·정제·정산의 순차 결합으로 트래픽 집중 및 정제 오류가 정산까지 전파되는 구조
  • 호출 페이지 식별 부재와 Commerce API별 파편화된 상품 데이터 규격

구조와 흐름

  • ETL의 광고 소재 선택·스코어링·랭킹·Catalog Set 생성, Delivery의 최신 Set 및 상품 메타 조회, Catalog의 Commerce·광고 데이터 조립
  • Stream의 원천 로그 수집 후 Kafka 토픽 기반 정제·정산 파이프라인 분리
  • RAW_DATA, AD_CLEAN_DATA, SPEND_REQUESTED 토픽을 통한 원천 행동 데이터·광고 필수 데이터·정산 데이터 단계화

선택 이유

  • 대용량 트래픽 대응을 위한 JVM 기반 Kotlin 도입
  • Coroutine 기반 비동기 I/O 호출로 Commerce API와 광고 API 병렬 조율
  • 도메인별 서비스 분리와 Kafka 메시징을 통한 역할·책임 명확화

성능/운영 포인트

  • 송출 시 사전 생성된 Catalog Set 조회로 실시간 데이터 선정 부담 축소
  • 통합 상품 인터페이스로 지면별 규격 관리와 속성 추가 공수 축소
  • 정제 오류 시 신규 Consumer Group으로 재처리 가능한 독립적 로그 운영 구조

다음 읽기

#Kotlin 주제를 다룬 다른 회사 글

입사 2개월차 백엔드 개발자의 우당탕탕 개발 성장기

입사 2개월차 백엔드 인턴이 프로젝트 개발과 장애 대응을 통해 배운 점을 공유했습니다. 테크 스펙, 테스트, 모니터링, 회고가 성장과 안정성에 중요했다고 정리했습니다.

당근마켓
당근마켓
백엔드
전체 보기

댓글 0개

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

댓글을 불러오는 중...