← 테크곳간 목록으로

NAVER Pay Dev Blog - Medium · 2025. 07. 31.

MongoDB CQRS 성능 개선기: 예상치 못한 Tomcat NDJSON 병목 해결

AI 엔지니어링 브리핑

MongoDB와 CQRS로 조회 속도는 크게 높였지만, 엑셀 다운로드는 Tomcat이 NDJSON을 한 줄씩 처리하는 방식 때문에 느려졌고 이를 통해 데이터 처리 구간별 병목을 찾아야 함을 보여준 글입니다.

문제 & 배경

대형 가맹점의 데이터가 특정 샤드에 몰리면서 복잡한 조회가 타임아웃을 일으켰고, CQRS를 도입한 뒤 일반 API 조회는 빨라졌지만 엑셀 다운로드 속도는 개선되지 않았습니다.

기술 & 해결책

MongoDB 조회 조건과 엑셀 라이브러리를 바꾸고 네트워크도 점검했지만 효과가 없었으며, 실제 원인은 Spring Web에서 Flux 형태의 NDJSON을 보낼 때 Tomcat이 각 JSON 줄을 직렬화하고 응답에 기록하는 작업을 반복하며 매번 대기한 것이었습니다.

교훈 & 주의점

따라서 성능 문제는 데이터베이스나 파일 생성 도구만 보지 말고 전송 형식과 웹 서버 처리 방식까지 구간별로 나누어 확인해야 하며, NDJSON처럼 많은 줄을 개별 처리하는 방식은 대량 다운로드에서 병목이 될 수 있습니다.

원문 읽기 ↗
내용이 비슷해요

내용이 비슷한 글을 먼저 보여드려요. 같은 문제나 해결책을 다룬다는 뜻은 아니에요.