Server

[Spring] Spring batch를 사용해보면서 (1)

lnacles 2023. 5. 24. 15:09

이번 포스트는 Spring batch를 사용해 보면서 Spring batch를 중심으로 이야기해보려 합니다.

아래 링크 참조 spring batch 공홈

 

Spring Batch - Reference Documentation

The reference documentation is divided into several sections: Spring Batch Introduction Background, usage scenarios, and general guidelines. Spring Batch Architecture Spring Batch architecture, general batch principles, batch processing strategies. What’

docs.spring.io

하나씩 차근차근 공부해보자.

배치의 계층화된 구조

위 그림은 배치 프로그램의 전체적인 구조이다.

Application

애플리케이션 단에서는 모든 배치 작업 및 사용자가 지정하는 코드로 정의할 수 있다. 즉 모든 것이 구현되는 곳이다.

Batch Core

Batch가 실행되고 제어되는 핵심 런타임이 구현되어 있다. JOBLAUNCHER가 구현되어 있다. 주로 Job, Step, Jobparameter, JobExecution 등이 있다. 여기서 동기/비동기를 구현을 선택할 수 있다.

Batch Infrastructure

배치의 시작과 끝, skip, retry와 같은 Error Handleling에 관한 것들이다. 흔히 ItemReader, ItemProcessor, ItemWrite가 있으며 경우에 따라 JpaPagingItemReader와 Chunk를 활용할 수도 있다.

 

 

JobLauncher 시퀀스

간혹 배치가 잘 동작하는지 확인하기 위해 Read만 구현해볼 것이다. Write가 없다면 해당 Job은 Execution이 실패라 간주하고 무한 반복되는 현상을 마주할 것이다. 이때 Write만 구현해 주면 Excution은 Job이 정상적으로 끝났다고 판단할 것이다. 일괄처리는 Spring boot로 구현할 수 있다. 다만 Spring batch는 일괄처리에 특화된 프레임 워크이며, 일괄처리에 대한 강력한 서비스를 제공해 줌을 알 수 있다.

 

작업 레포지토리

Spring batch에서는 배치 작업과 복잡한 스케줄링, 대규모 배치를 하기 위해 메타 데이터를 사용합니다. 메타 테이블을 총 6개로 구성되어 있으며 복잡하고 대규모 배치 작업에서 메타 테이블을 핸들링해야 할 수도 있다.

 

여기까지 기본적인 Spring Batch 개념이었습니다.

짧은 시간 빠르게 학습했던 내용이라 천천히 정리하면서 포스팅하겠습니다.