IT/java|Spring

[Spring Batch] Tasklet vs Chunk 비교 특징 차이 장단점

snapcoder 2024. 7. 8. 16:27
728x90
반응형
SMALL

 

 

 

 

 

스프링 배치 개발 시 두 가지 타입이 있습니다:

  1. Tasklet: 한 번에 처리하는 방식
  2. Chunk: 데이터를 덩어리로 나누어 처리하는 방식

 

 

 

 

Job 설정 파일을 개발할 때의 과정은 다음과 같습니다:

  1. Config 파일 생성
  2. Job Bean 생성
  3. Step Bean 생성

 

 

 

특징:

  1. Job은 여러 개의 Step 실행 순서를 정의합니다. Job과 Step은 1관계입니다.
  2. Step은 Chunk (Reader, Processor, Writer) 방식 또는 Tasklet 방식 중 용도에 맞게 선택하여 구현할 수 있습니다. Step과 Tasklet(또는 Chunk)은 1:1 관계입니다.
  3. 반드시 JobListener와 StepListener를 사용해야 합니다.

 

 

 

 

 

차이 비교

Tasklet 또는 Chunk 개발시

 

1. Tasklet

  • Tasklet 파일 생성
  • execute 메소드 내 로직 구현

 

2. Chunk

  • ItemReader 파일 생성
  • ItemProcessor 파일 생성 (선택 사항)
  • ItemWriter 파일 생성

 

 

 

 

 

 

 

 

장단점

 

1. Tasklet
     • Chunk(Reader, Processor, Writer)와 다르게 역할을 나누지 않고 하나의 클래스 내에서 한 번에 구현하는 방식이다.
     • Tasklet의 시작~ 종료까지 하나의 트랜잭션으로 처리된다.
     • 대용량 처리에 부적합하다.


2. Chunk (temReader, ItemProcessor, ItemWriter)
      데이터 처리 역할에 따라 클래스를 분리하여 구현하는 방식이다.
      a. ItemReader : 데이터 읽기
            i. 데이터를 읽어서 processor에게 전달한다.
                  ※ processor가 없는 경우, writer에게 전달한다.
            ii. MyBatisPagingltemReader, FlatFileltemReader 등 데이터를 읽는 방법에 따라 필요한 Reader를 상속받아서 구현한다.
       b. ltemProcessor : 데이터 가공 (선택 사항)
              i. reader에게 전달받은 데이터를 가공하는 역할을 한다.
              ii. 데이터를 처리한 후, writer에게 전달한다.
       c. ltemWriter : 데이터 쓰기
              i. 전달받은 데이터를 Chunksize만큼 처리한 후, Commit 한다.
      • Step에서 정의한 ChunkSize가 Commit 단위가 된다.
      대용량 처리에 적합하다.

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST