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

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

MongoDB CQRS 성능 개선기

이 게시물은 네이버페이 정산 시스템에서 대용량 데이터 조회 성능 개선을 위해 CQRS 패턴과 MongoDB를 도입한 경험을 공유합니다.

성능 병목 원인 분석

  • MongoDB 조회 성능과 엑셀 라이브러리 튜닝으로는 엑셀 다운로드 속도 개선에 한계
  • Tomcat에서 Flux 리턴 타입으로 NDJSON을 스트리밍할 때 한 줄씩 blocking 발생
  • NDJSON은 각 JSON 객체를 개행 문자로 구분하며, Tomcat은 각 줄을 write & flush 하여 I/O 병목 유발

해결책 및 결과

  • Netty 환경에서 성능이 크게 개선됨을 확인했으나, 전환 리소스 부족
  • Spring Web에서 Flux 데이터를 1000개씩 버퍼링하여 한 번에 write & flush 처리하는 방식 도입
  • 이로 인해 엑셀 다운로드 성능이 획기적으로 향상되어 CQRS 도입 효과를 실감

연관 게시글