Springboot

[Spring] Spring Batch

아몬드맛빼빼로 2025. 3. 5. 16:00
반응형

누구세요?

Spring Batch는 일관되고 반복되는 작업,트랜젝션 관리,로그 추적 등 대용량 일괄처리에 특화된 Batch 프레임워크라 할 수 있다.

내부 동작

Spring Batch는 스스로 Job을 실행시킬 수 없다.Spring Batch는 Job이 어떻게 실행될 지를 설정할 뿐이고 이를 실행하는 것은 Batch Scheduler의 역할이다. Quertz Scheduler 등의 Scheduler를 이용하여 실행시켜줄 수 있다

 

Batch를 진행하는데 필요한 모든 Object를 포함하는 JobRepository도 있다.이를 통하여 Batch와 관련한 수치 데이터와 Job의 상태를 유지관리하며 Batch와 관련된 CRUD 수행도 처리하는 역할을 한다

용어 정리

  • Job - Batch 처리 과정을 하나의 단위로 만들어 놓은 객체을 뜻한다
  • Job Launcher - Job을 실행시키는 역할을 하며 Job & Job Parameters를 param으로 받고 배치 수행 후, JobExecution 을 반환한다.Spring Batch에서는 JobLauncherApplicationRunner 클래스가 자동으로 Job Launcher를 실행하기 때문에 우리가 직접 조작할 일은 사실상 없다.
  • Job Instance - Job 실행의 단위를 나타내며 Job을 한번 실행 시키면 하나의 Job Instance가 생성된다. 예를들어 1월 1일 실행, 1월 2일 실행을 하게 되면 각각의 Job Instance가 생성되며 1월 1일 실행한 Job Instance가 실패하여 다시 실행을 시키더라도 이 Job Instance는 1월 1일에 대한 데이터만 처리하게 된다.
  • Job Execution - Job Instance의 실행 시도에 대한 객체로 Job Instance가 실패하여 재시도를 한다면 동일한 Job Instance를 실행하지만 새로운 Job Execution을 생성하게 된다.JobInstance 실행에 대한 상태,시작시간, 종료시간, 생성시간 등의 정보를 담고 있다.
  • Job Repository - 모든 Batch 처리에 관한 정보를 담고 있으며 Job이 실행되면 Job Execution과 Step Execution을 생성하게 되며 Job Repository에서 Execution 정보들을 저장하고 조회하며 사용하게 된다.
  • Step - Job을 구성하는 기본적인 구성단위로 실제 Batch가 실행되는 처리를 정의하고 제어하는데 필요한 모든 정보를 가지고 있는 객체라 할 수 있다. Tasklet/Chunk 기준으로 동작한다
  • 더보기
    Tasklet vs Chunk

    Tasklet: 한 가지 이상의 CRUD가 발생(=비즈니스 로직)이 필요한 task를 일괄적으로 처리해야 하는 경우에 선택한다. (복잡한 로직을 수행해야 하는 Job일 경우)

    Chunk: Chunk 단위로 처리할 모든 record를 한 번에 읽어들인 후, 모두 읽기에 성공하면 한 번에 Write하는 방식이다. (대용량 데이터를 단순하게 처리해야 하는 경우)

  • Step Execution - Step Execution은 JobExecution과 동일하게 Step 실행 시도에 대한 객체를 나타낸다.하지만 Job이 여러개의 Step으로 구성되어 있을 경우 이전 단계의 Step이 실패하게 되면 다음 단계가 실행되지 않음으로 인하여 다음 Step Execution은 생성되지 않는다. Step Execution 또한 JobExecution과 동일하게 실제 시작이 될 때만 생성된다. StepExecution에는 JobExecution에 저장되는 정보 외에 read 수, write 수, commit 수, skip 수 등의 정보들도 저장이 된다.
  • Item Reader - Batch 수행의 대상이 되는 데이터를 읽어들이는 역할의 객체이다.
  • Item Processor - Read와 Write의 중간 단계에서 데이터의 가공 역할을 수행한다.Read와 Write 만으로 처리가 가능하다면 해당 단계는 Skip도 가능하다.
  • Item Writer - Batch의 마지막 단계로 가공된 데이터를 최종 출력하는 단계이다.

'Springboot' 카테고리의 다른 글

Whitelabel Error Page와 Tomcat Error Page  (0) 2025.04.26
[Spring] Spring Cloud  (1) 2025.02.05
[Spring] Thread Pool과 Spring Scheduler  (1) 2024.12.30
[Springboot] Interceptor?  (1) 2024.12.15