ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Batch] Step
    Java/Spring Batch 2021. 5. 15. 22:54

    Step

    잡이 전체적인 처리를 정의한다면, 스텝은 잡의 구성 요소를 담당한다. 스텝은 독립적이고 순차적으로 배치 처리를 수행한다. 그렇기 때문에 이 책에서는 스텝을 배치 프로세서라고 부른다. 

    스텝은 모든 단위의 조각이다. 자체적으로 입력을 처리하고, 자체적인 처리기를 가질 수 있으며, 자체적으로 출력을 처리한다. 

    트랜잭션은 스텝 내에서 이뤄진다. 스텝은 서로 독립되도록 의도적으로 설계됐다. 이렇게 함으로써 개발자는 필요에 따라 자유롭게 잡을 구조화할 수 있다. 

     

    테스크릿 처리 vs 청크처리

    테스크릿 모델

    • Tasklet인터페이스를 사용해 개발자는 Tasklet.execute 메서드가 RepeatStatus.FINISHED 를 반환할 때까지 트랜잭션 범위 내에서 반복적으로 실행된느 코드 블록을 만들 수 있다.

    청크 기반 처리 모델 

    • 청크 기반 스텝은 최소한 2~3개의 주요 컴포넌트(ItemReader, 필수는 아닌 ItemProcessor, ItemWriter)로 구성된다. 스프링 배치는 이러한 컴포넌트를 사용해 레코드를 청크 또는 레코드 그룹 단위로 처리한다. 각 청크는 자체 트랜잭션으로 실행되며, 처리에 실패했다면 마지막으로 성공한 트랜잭션 이후부터 다시 시작할 수 있다. 

    청크 기반 처리 시퀀스 다이어그램

    청크 기반 처리는 3가지 루프를 수행한다.

    1. ItemReader에서 일어난다. ItemReader는 청크 단위로 처리할 모든 레코드를 반복적으로 메모리로 읽어온다.
    2. ItemProcessor에서 일어난다. 필수 구성 요소는 아니지만 ItemProcessor를 구성했다면, 메모리로 읽어들인 아이템은 반복적으로 ItemProcessor를 거쳐간다.
    3. 마지막으로 한 번에 기록할 수 있는 ItemWriter를 호출하면서 모든 아이템을 전달한다. ItemWriter의 단일 호출은 물리적 쓰기를 일괄적으로 처리함으로써 IO최적화를 이룬다. 

     

     


    스프링배치 완벽 가이드, 마이클 미넬라

     

    댓글

Designed by Tistory.