본문으로 이동
문서

Kurly에서 주문을 모니터링 하는 법

노준혁 · 컬리 · 컬리 기술 블로그

원본 보기

소개

Legacy 시스템에서 주문 모니터링을 Elasticsearch로 이전했습니다.

AI 핵심 요약

주문량 증가로 복잡한 조인·서브쿼리와 집계가 포함된 Legacy 검색이 느려지고, 타임아웃과 데이터 정합성 문제가 반복됐다. 이를 개선하기 위해 PHP 애플리케이션에서 주문 이벤트를 Kafka로 발행하고 Elasticsearch와 Kibana 대시보드로 실시간 주문 현황과 통계를 조회하도록 바꿨다. 배포 후 조회 속도와 가시성은 개선됐지만, 비동기 전송에 따른 유실과 이벤트 누락·중복 가능성을 확인해 flush, ack 설정, 로그 ID 기반 멱등성 보완이 필요했다. 모니터링 데이터는 운영 장애 파악뿐 아니라 비즈니스 인사이트에도 활용할 수 있으며, 수집 데이터의 정합성을 함께 설계해야 한다.

  • Kafka Producer는 비동기로 동작하므로 프로세스 종료 전에 flush를 호출해 전송 완료를 기다려야 한다.
  • ack 설정은 전송 확인 수준과 속도·유실 위험 사이의 균형을 고려해 선택한다.
  • 이벤트 수집은 DB의 현재 상태와 차이가 날 수 있으므로 누락 이벤트를 보완할 방법을 마련해야 한다.
  • 중복 이벤트에 대비해 로그 ID를 지정하면 멱등성을 확보하는 데 도움이 된다.