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