Spring Batch의 특징
- 트랜잭션(Transaction) 관리
- Chunk 기반 관리
- 선언적 I/O
- 시작/종료/재시작 인터페이스 제공
Spring Batch Architecture
Application
- 스프링 배치 프레임워크를 통해 개발자가 만든 모든 배치 Job 과 커스텀 코드
- 개발자는 업무 로직 구현만 집중
Batch Core
- Job 실행, 모니터링, 관리 API 로 구성
- JobLauncher, Job, Step, Flow 등 구성
Batch Infrastructure
- Application, Core 모두 공통 Infrastructure 위에서 빌드
- Job 실행 흐르모가 처리를 위한 틀을 제공
- Reader, Processor Writer, Skip, Retry 등이 속한다.
Job Structure
JOB
- 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업을 의미
- Job Configuration을 통해서 생성되는 객체 단위로써 배치 작업을 어떻게 구성하고 실행 할지를 기술 또는 명세해 놓은 객체
- Job은 여러개의 Step을 포함하는 컨테니어
Step
- Job을 구성하는 독립적인 하나의 단계
- 실제 배치 처리를 정의하고 컨트롤 하는데 필요한 모든 정보를 가진 객체
- Step 구현체
- TaskletStep: 가장 기본이 되는 클래스로 Tasklet 타입의 구현체를 제어
- PartitionStep: 멀티 쓰레드 방식으로 Step을 여러개로 분리 실행
- JobStep: Step 내에서 외부 Job을 실행 할 수 있는 클래스
- FlowStep: Step 내에서 Flow 를 실행 할 수 있는 클래스
☞ Step의 실행 단위는 크게 2가지로 구분됨
Tasket
- Step 내부에서 실제 데이터를 Handling 하는 데이터 로직
- Tasklet은 실제 수행 방식이 2가지로 나눠짐
- chunk:
- 하나의 큰 덩어리를 n개씩 나눠서 실행하는 의미로, 대량 데이터 처리에 적합한 구조
- ETL(Extract, Transform, Load) 단계에 맞게 데이터를 처리 할 수있는 구조
- ItemReader : 데이터를 읽기를 수행하는 인터페이스
- ItemProcessor : 비즈니스 로직에 맞게 데이터를 수행 하기 위한 인터페이스
- ItemWriter : ItemProcessor를 통해 생성된 데이터를 저장하는 인터페이스
- Task:
- ItemReader / ItemWriter 등을 단순화해서 데이터 처리는 하는 방식
- Tasklet 구현체 기반으로 단순화한 배치에 사용 적합
Spring Batch Structure
Tier
i) Run Tier
- Application / Batch 관련 설정 및 수행 시작과 관련된 계층
- 스케쥴에 관련된 시간 설정 등을 관리하는 계층
ii) Job Tier
- Batch Process의 전체 실행 담당
- Batch 단계를 순차적으로 실행하여 모든 단계가 올바른 상태인지 적절한 정책이 시행 되도록 함
- Job Launcher를 통해 Job이 돈다.
- Job Launcher 및 Job이 실행 될 때 JobExecution이 JobRepository에 저장 및 조회
iii) Application Tier
- 프로그램을 실행하는 데 필요한 구성 요소 포함
- 요구된 배치의 기능을 처리하고 Tasklet 실행에 대한 정책 시행
- 여기서, Step이 실행 중에 JobRepository에 StepExecution이 저장 및 조회
iv) Data Tier
- DB, Data File 등의 DataSource와 연결 제공
색상 박스 구분
i) 노란색
- 스케쥴러 또는 DB와 같은 외부 Application
- Spring Batch와 별도로 고려되어야 한다는 점이 중요
ii) 주황색
- Application Service
- 대부분의 Service는 Spring Batch에서 제공
- 원하는 구조가 있으면 따로 수정할 수 있음
iii) 초록색
- 개발자가 구성해야 하는 파트
- 일정한 주기대로 작업이 시작되도록 설정
- 작업을 실행하는 방법 등
Reference
- Spring Batch 5 Manual: https://docs.spring.io/spring-batch/docs/5.0.0-SNAPSHOT/reference/html/spring-batch-intro.html#spring-batch-intr
Spring Batch Introduction
Many applications within the enterprise domain require bulk processing to perform business operations in mission critical environments. These business operations include: Automated, complex processing of large volumes of information that is most efficientl
docs.spring.io
- Sprig Batch 구조와 구성요소: https://deeplify.dev/back-end/spring/batch-architecture-and-components
[스프링/Spring] Batch 구조와 구성 요소
스프링 배치 프레임워크 구조와 프레임워크를 구성하는 요소들에 대해서 소개합니다.
deeplify.dev
- Spring Batch 가이드: https://jojoldu.tistory.com/325?category=902551
2. Spring Batch 가이드 - Batch Job 실행해보기
이번 시간에는 간단한 Spring Batch Job을 생성 & 실행하면서 전반적인 내용을 공부해보겠습니다. 작업한 모든 코드는 Github에 있으니 참고하시면 됩니다. 2-1. Spring Batch 프로젝트 생성하기 기본적인
jojoldu.tistory.com
'Framework > Spring-Batch' 카테고리의 다른 글
(6) Spring Batch Step (0) | 2022.11.16 |
---|---|
(5) Spring Batch Job (0) | 2022.11.16 |
(4) Spring Batch 의존성 설정 (0) | 2022.11.16 |
(3) Spring-Batch Schema (0) | 2022.11.12 |
(2) Spring Batch Configuration (0) | 2022.11.12 |