Spring Batch, Kafka 기반 데이터 추출 서비스 구축 노하우

by DD
2년 전
조회수 8

대용량 데이터 추출동기적 방식의 문제점을 인지하고, Kafka 기반의 비동기 처리 방식으로 전환

Spring Batch를 활용하여 데이터 추출 작업을 병렬 처리하고, S3에 저장하여 재사용성 확보

비동기 이벤트 방식 도입으로 시스템 부하를 줄이고, 데이터 추출 속도 향상 및 안정성 개선

비동기 데이터 추출 아키텍처 설계

기존 동기 방식의 데이터 추출DB 부하 및 사용자 대기 시간을 증가시켰다. Kafka를 활용하여 비동기 이벤트 기반으로 변경하고, Spring Batch를 통해 병렬 처리를 구현했다. 따라서 시스템 안정성사용자 경험을 동시에 개선했다.

Spring Batch Partitioning 심층 분석

Spring BatchPartitioning은 대용량 데이터 처리의 핵심이다. Multi-threaded Step, Parallel Steps 등 다양한 옵션 중 Partitioning을 선택하여 엑셀 생성 작업을 분할했다. 결과적으로 데이터 처리량 증가자원 효율성을 확보했다.

Kafka Consumer를 활용한 Batch 실행

스케줄러 방식 대신 Kafka Consumer를 통해 Spring Batch Job을 실행한다. Kafka 이벤트 발생 시 @KafkaListener를 통해 Job을 트리거한다. 따라서 유연한 확장성실시간 데이터 처리를 가능하게 하며, 시스템 부하 분산에도 기여한다.

확장할 수 있는 데이터 추출 서비스 구축 경험 공유