22.5.30 [Spring] Spring Batch

서태욱·2022년 5월 30일
0

Spring

목록 보기
1/2
post-thumbnail

✅ Spring Batch

Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공하는 오픈소스 프레임워크다.

Restartability가 핵심으로, 예컨대 100GB 작업 중 55% 지점에서 중단시, 다음에 다시 55%부터 이어서 작업을 진행할 수 있다.

Batch 어플리케이션은 다음 조건을 만족해야 한다.

  • 대용량 데이터 를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 있어야 한다.
  • 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행 되어야 한다.
  • 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 한다.
  • 무엇이 잘못되었는지 추적할 수 있어야 한다. (로깅, 알림)
  • 지정한 시간 안에 처리를 완료하거나, 동시에 실행되는 다른 어플리케이션을 방해하지 않게 수행되어야 한다.

Spring Batch에서의 Job은 여러가지 Step의 모음(약 2~10개)으로 되어 있으며, Job은 순차적으로 Step을 수행한다. Step은 Tasklet 처리 방식과 Chunk 지향 처리 방식을 지원하고 있다.

  • Tasklet : 임의의 step 실행시 chunk를 하나의 작업(단계 내 단일 태스크)으로 처리하는 방식.
    step에서 chunk() 대신 tasklet()을 사용한다.
    대부분의 경우 chunk로 처리하나, 가볍고 몇줄 되지 않는 작업이거나 writer가 불필요한 경우,
    tasklet으로 간단히 처리하기도 한다.

  • Chunk : 읽기 - 가공하기 - 쓰기의 묶음(Chunk-processing)

            ItemReader<T> - ItemProcessor<I, O> - ItemWriter<T>
                    T < - > I                O < - > T

👉 참고

profile
re:START

0개의 댓글