확장 가능한 데이터 추출 서비스 구축 경험 공유
·2023.12.18 20:09
Spring Batch와 Kafka를 도입하여 대용량 데이터 추출 시 발생하는 서버 부하와 사용자 대기 문제를 해결했다.
기존의 데이터 추출 방식은 동기적 구조로 인해 대량의 데이터를 요청할 경우 사용자가 브라우저에서 계속 대기해야 했으며, 이는 서버 자원 부족과 백엔드 서비스 부하로 이어졌다.
이를 해결하기 위해 비동기 응답 프로세스를 구현하고, 백엔드 서버와 엑셀 생성 서버를 분리하여 부하를 분산했다. Kafka를 도입해 엑셀 생성 이벤트를 관리하고, 생성된 파일은 S3에 업로드하여 언제든 재다운로드할 수 있도록 개선했다.
데이터 추출 효율을 극대화하기 위해 Spring Batch의 Partitioning 방식을 채택했다. 하나의 Job 내에서 다수의 Secondary를 생성하여 데이터를 분할 처리하고, 여러 개의 엑셀 파일을 만든 뒤 최종적으로 하나로 병합하는 방식으로 작업 효율을 높였다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.