티스토리 뷰

반응형

배치 아키텍처

1. 잡

- 중단이나 상호작용 없이 처음부터 끝까지 실행되는 처리

- 여러개의 스텝이 모여 이뤄질 수 있다.

- 잡의 플로우는 조건부일 수 있다.

 

2. 스텝

- 잡을 구성하는 독립된 단위

- 태스크릿 기반 스텝과 청크 기반 스텝 두가지 유형이 있다.

  • 태스크릿 (Tasklet)
    • 스텝이 중지될때까지 execute 메서드가 계속 반복해서 수행된다. (execute 가 호출될때마다 새로운 트랜잭션이 시작된다)
    • 초기화, 저장 프로시저 실행, 알림전송 같은 잡에서 사용된다.
  • 청크
    • 아이템 기반 처리에 사용된다.
    • ItemReader, ItemProcessor(선택), ItemWriter 라는 3개의 주요 부분으로 구성될 수 있다

3. 잡 실행

1) JobRepository : 주요 공통 컨포넌트

- 다양한 배치 수행과 관련된 수치 데이터 ( 시작 시간, 종료 시간, 상태, 읽기/쓰기 횟수 등) 와 잡의 상태를 유지 관리한다.

- 잡의 상태 관리를 위해 RDBMS 를 사용하며 스프링 배치 내의 배부분의 주요 컴포넌트가 공유한다.

 

2) JobLauncher : 잡 실행을 담당한다.

- 잡의 재실행 가능 여부 검증, 잡의 실행방법( 현재 스레드에서 실행 or 스레드 풀을 통해 실행할지), 파라미터 유효성 검증등의 처리를 수행한다.

- 스프링 부트 환경이라면 스프링부트가 즉시 잡을 시작하는 기능을 제공하기 때문에 일반적으로 직접 다룰 필요가 없는 컴포넌트이다.

 

3) 잡 실행과정

- 잡을 실행 -> 각 스텝을 실행함 -> 각 스텝이 실행되면 JobRepository는 현재 상태로 갱신된다. 

- 실행된 스텝, 현재상태, 읽은 아이템 및 처리된 아이템 수등이 모두 JobrRepository 에 저장된다.

- 스텝은 ItemReader가 읽은 아이템의 목록을 따라간다. 스텝이 각 청크를 처리할 때마다 JobRepository 내 StepExecution의 스텝상태가 업데이트된다.

 

4) JobInstance

- 스프링 배치 잡의 논리적인 실행.

- "잡의이름", "잡의 논리적 실행을 위해 제공되는 고유한 식별 파라미터 모음" 으로 유일하게 존재한다. 

- 예 : NewsBatchJob() 이라는 잡의 파라미터에 "조선일보" 를 전달하면 조선일보 매체의 뉴스 데이터를 처리하는 JobInstance가 생성된다. 파라미터에 "경제신문"을 주면 새로운 잡인스턴스가 생성된다는 것이다. 파라미터에 날짜도 함께 전달해서 조선일보 매체를 처리하는 잡인스턴스를 더 많이 띄우는 식으로 미세조정할 수 있을 것 같다.

 

5) JobExecution

- 잡을 실제 실행을 담당한다.

- 잡을 구동할때마다 매번 새로운 JobExecution을 얻게 된다. 

- 실패한 잡을 재실행 시킬때는 새로운 잡인스턴스를 얻는 대신 JobExecution만 새로 생성된다.

- 여러개의 StepExecution과 연관된다.

 

6) StepeExecution

- 스텝의 실제 시행을 나타낸다.

- 스텝 인스턴스 같은 건 없다.

 

병렬화

잡 내의 스텝을 처음부터 끝까지 순서대로 단일 스레드에서 실행시킨다. 제일 단순.

1. 다중 스레드 스텝을 통한 작업 분할

2. 전체 스텝의 병렬 실행

3. 비동기 ItemProcessor/ItemWriter 구성

4. 원격 청킹

5. 파티셔닝

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함