Spring Batch 2

Spring Batch 성능 개선기(병렬처리)

최근 회사에서 프로젝트를 진행하며 사용했던 Spring Batch 성능 개선기를 기록해보려합니다. 먼저, 간략하게 배치가 어떤 흐름으로 동작하는지를 알아보면 1. 대상 상품 조회(Reader)대상 2. 상품중 비즈니스 로직으로 필터링(Processor) 3. api 호출 및 결과 db 저장(Writer) 와 같이 동작하고 있습니다. 1. 병목 지점 찾기 위 프로세스로 동작하는 프로토타입 레벨의 배치는 대상 상품 30 ~ 40만개 기준 4시간 ~ 6시간 정도가 소요되고 있었습니다. 별도의 커스텀한 설정을 따로 하지 않았기 때문에 싱글 쓰레드 기반으로 동작할 것이고 하나씩 순차적으로 처리되고 있습니다. step을 분리하여 병목지점을 분석한 결과는 다음과 같은데요. Mongo DB 단건 저장 3번의 api c..

TroubleShooting 2024.04.05

Spring Batch Architecture

JobLauncher: Job을 실행시키는 컴포넌트 Job: 배치 작업 JobRepository: Job 실행과 Job, Step을 저장 Step: 배치 작업 단계 ItemReader, ItemProcessor, ItemWriter: 데이터를 읽고 처리하고 쓰는 컴포넌트 Application Layer: 비즈니스 로직이 존재, 사용자의 코드 Core Layer: 배치 작업을 시작하고 제어하는데 필수적인 클래스 Job, Step, JobLauncher Infrastructure Layer: 외부와 상호작용 ItemReader, ItemWriter, RetryTemplate Job 전체 배치 프로세스를 캡슐화한 도메인 Step의 순서를 정의 JobParameters를 받음 JobExecution이 실제 실행..

Spring/Spring Batch 2022.02.20
반응형