개발/SPRING
[Spring Batch] Spring Batch에 대하여
지잉지잉
2023. 1. 29. 02:32
Spring Batch란?
- 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크
- Spring Scheduler와는 별개의 개념이다. Batch는 보통 Jenkins나 Spring Scheduler에 의해 Trigger 된다.
왜 쓸까? (내 생각..)
- A라는 한 서버가 있고 이 서버에는 주기적으로 데이터를 처리해야하는 일련의 작업이 있다.
- A서버의 해당 작업은 Spring Scheduler에 의해 해당 로직이 수행된다.
- 그러면 A서버는 데이터를 주기적으로 처리하는 일 뿐만아니라 본래 수행해야하는 요청/응답까지 수행했을 때 리소스가 부족하거나 하진 않을까?
- 이 작업을 Spring Batch로 구현한다면 => 별도의 배치서버로 구현하고 해당 서버는 Scheduler에 의해 실행이 된다.
- 즉 Spring Scheduler에 의해 Trigger가 된다면, 새로운 Job Instance가 생기고 배치작업이 끝나면 Job Instance는 사라진다. 배치가 실행되는 시간에만 서버의 리소스를 사용한다.
- 그렇기 때문에 서버에서는 리소스 관리를 수월하게 할 수 있다.
Tasklet 처리 방식과 Chunk 지향 처리 방식에 대하여
- Spring Batch에서 "Job"은 순차적인 Step을 수행한다.
1. Tasklet 처리 방식
- 하나의 메서드로 구성되어 있는 간단한 인터페이스 이다. 1Step:1Tasklet
2. Chunk 지향 처리 방식
- Chunk란, Batch 처리에서는 chunk 단위로 트랜잭션을 수행한다.
- chunk는 트랜잭션 내에서 커밋하는 row 수 이며 chunk 단위만큼 커밋되거나 롤백된다.
- 여기서 ItemReader와 ItemProcessor에서는 데이터 1건씩 다뤄지고, Writer에서는 Chunk 단위로 처리된다.