Post

[Spring Batch] 핵심 구성 요소와 아키텍처 총정리

[Spring Batch] 핵심 구성 요소와 아키텍처 총정리

📗 1. Spring Batch 계층 구조


스프링 배치는 작업을 효율적으로 관리하기 위해 Job, Step, Execution으로 이어지는 계층적인 도메인 모델을 가진다.

📌 구조 > Job (1) : Step (N) > Job (1) : JobInstance (N)

📌 주요 개념

1️⃣ Job (작업)

  • 배치 처리의 최상위 개념
  • 여러 개의 Step으로 구성 가능하며, 스프링 빈(Bean)으로 관리된다.

2️⃣ JobInstance (논리적 실행 단위)

  • Job이 실행될 때 생성되는 논리적인 실행 단위이다.
  • Job + JobParameter = JobInstance
    • 예: ‘일일 정산’ Job이 1월 1일, 1월 2일 각각 실행되면 2개의 Instance가 생성됨

3️⃣ JobExecution (실제 실행)

  • JobInstance의 실제 실행 시도를 의미한다.
  • 실패 후 재실행 시 JobInstance는 동일하지만, JobExecution은 새로 생성된다.

📗 2. 작업의 단위: Step & Flow


Step은 Job 내부에서 실제 비즈니스 로직을 수행하는 단계이다.
처리 방식에 따라 TaskletChunk 방식으로 나뉜다.

📌 Step 처리 방식

1️⃣ Tasklet

  • 단순한 작업, 단일 로직 처리에 사용
  • 파일 삭제, 단순 프로시저 호출 등

2️⃣ Chunk-Oriented

  • 대용량 데이터를 읽고(Read), 가공하고(Process), 쓰는(Write) 구조적 처리에 사용
  • 트랜잭션 관리가 용이함

📌 Flow (흐름 제어)

단순히 next()로 연결하는 것을 넘어, 조건부 흐름(분기 처리)을 제어하는 컨테이너이다.

💡 Flow 시나리오 예시

  • Step A 성공 시 → Step B 실행
  • Step A 실패 시 → Step C 실행

```java // 흐름 제어 의사 코드(Pseudo Code) .start(stepA) .on(“FAILED”).to(stepC) .from(stepA).on(“*”).to(stepB) .end()

This post is licensed under CC BY 4.0 by the author.