개발놀이터
멀티 스레드 환경에서의 스프링 배치 (개요) 본문
본 포스팅은 인프런의 정수원님의 스프링 배치 강의를 듣고 정리한 포스팅입니다. 더 자세한 내용은 강의를 참고해주세요.
기본 개념
단일 스레드 vs 멀티 스레드
- 프로레스 내 특정 작업을 처리하는 스레드가 하나일 경우 단일 스레드, 여러 개 일 경우 멀티 스레드로 정의할 수 있다.
- 작업 처리에 있어서 단일 스레드와 멀티 스레드의 선택 기준은 어떤 방식이 자원을 효율적으로 사용하고 성능 처리에 유리한가 하는 점이다.
- 일반적으로 복잡한 처리나 대용량 데이터를 다루는 작업일 경우 전체 소요 시간 및 성능상의 이점을 가져오기 위해 멀티 스레드 방식을 선호한다.
- 멀티 스레드 처리 방식은 데이터 동기화 이슈가 존재하기 때문에 최대한 고려해서 결정해야 한다.
스프링 배치 스레드 모델
- 스프링 배치는 기본적으로 단일 스레드 방식으로 작업을 처리한다.
- 성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공한다.
- Local 과 Remote 처리를 지원한다.
1. AsyncItemProcessor / AsyncItemWriter
- ItemProcessor 에게 별도의 스레드가 할당되어 작업을 처리하는 방식
2. Multi-threaded Step
- Step 내 Chunk 구조인 ItemReader, ItemProcessor, ItemWriter 마다 여러 스레드가 할당되어 실행하는 방법
3. Remote Chunking
- 분산환경처럼 Step 처리가 여러 프로세스로 분할되어 외부의 다른 서버로 전송되어 처리하는 방식
4. Parallel Steps
- Step 마다 스레드가 할당되어 여러개의 Step을 병렬로 실행하는 방법
5. Partitioning
- Master/Slave 방식으로 Master가 데이터를 파티셔닝 한 다음 각 파티션에게 스레드를 할당하여 Slave가 독립적으로 작동하는 방식
'Spring > Spring Batch' 카테고리의 다른 글
멀티스레드 환경에서의 스프링 배치 : Multi-threaded Step (0) | 2022.10.22 |
---|---|
멀티 스레드 환경에서의 스프링 배치 : AsyncItemProcessor/AsyncItemWriter (0) | 2022.10.12 |
Chunk 지향 처리 : ItemWriter (심화) (0) | 2022.10.11 |
Chunk 지향 처리 : ItemReader (심화) (0) | 2022.10.10 |
Chunk 지향 처리 : ItemReader, ItemProcessor, ItemWriter 개요 (0) | 2022.10.04 |