
광고 서비스 개발 연대기
두줄요약
광고 송출과 로그 수집의 병목을 해결하기 위해 도메인별 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으로 재처리 가능한 독립적 로그 운영 구조




