대용량 데이터 추출 시 동기적 방식의 문제점을 인지하고, Kafka 기반의 비동기 처리 방식으로 전환
Spring Batch를 활용하여 데이터 추출 작업을 병렬 처리하고, S3에 저장하여 재사용성 확보
비동기 이벤트 방식 도입으로 시스템 부하를 줄이고, 데이터 추출 속도 향상 및 안정성 개선
기존 동기 방식의 데이터 추출은 DB 부하 및 사용자 대기 시간을 증가시켰다. Kafka를 활용하여 비동기 이벤트 기반으로 변경하고, Spring Batch를 통해 병렬 처리를 구현했다. 따라서 시스템 안정성과 사용자 경험을 동시에 개선했다.
Spring Batch의 Partitioning은 대용량 데이터 처리의 핵심이다. Multi-threaded Step, Parallel Steps 등 다양한 옵션 중 Partitioning을 선택하여 엑셀 생성 작업을 분할했다. 결과적으로 데이터 처리량 증가와 자원 효율성을 확보했다.
스케줄러 방식 대신 Kafka Consumer를 통해 Spring Batch Job을 실행한다. Kafka 이벤트 발생 시 @KafkaListener를 통해 Job을 트리거한다. 따라서 유연한 확장성과 실시간 데이터 처리를 가능하게 하며, 시스템 부하 분산에도 기여한다.