-
[Spring Batch] Spring Batch에 대하여개발/SPRING 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 단위로 처리된다.
'개발 > SPRING' 카테고리의 다른 글
[Spring] RestDocs로 API 문서화를 간단히 해보자 (0) 2023.06.18 [Spring] DI를 쉽게 하는 방법 (Feat. @RequiredArgsConstructor) (0) 2023.02.26 [Spring] Intellij Community로 Multi Module Project 생성하기 (0) 2023.02.26 [Spring Webflux] 웹플럭스에 대한 간단 정리 (0) 2023.02.05 Spring Bean의 Scope (0) 2021.08.19