티스토리 뷰
배치 아키텍처
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. 파티셔닝
'Spring' 카테고리의 다른 글
| Spring boot 에서 데이터 변경로깅 (0) | 2024.08.28 |
|---|---|
| Spring Ldap 공식문서 번역 (0) | 2022.08.03 |
| 스프링배치 1장 - 배치와 스프링 (1) | 2022.03.12 |
| 스프링 배치 2 - 시작하기 (0) | 2022.03.05 |
| 스프링 배치 1 - 개요 및 아키텍처 (0) | 2022.03.05 |