Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
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 29 30 31
Archives
Today
Total
관리 메뉴

사부작사부작

스프링 배치 스터디 2주차 본문

스터디

스프링 배치 스터디 2주차

민철킴 2024. 10. 14. 23:23

 

배치 아키텍처를 살펴보면 위와 같습니다. 이 구성 요소들을 포함하여 레이어 단위로 나눠서 간단히 알아보겠습니다.

 

1. Application Layer

  • 개발자가 직접 작성하는 부분으로, 배치 애플리케이션의 비즈니스 로직과 배치 작업의 흐름을 정의합니다.

주요 구성 요소:

  • Job: 배치 작업의 전체 흐름을 정의하는 엔티티로, 하나 이상의 Step으로 구성됩니다.
  • Step: 배치 작업의 단위 실행을 나타내며, Tasklet 또는 Chunk 로 나눠집니다.
    • Tasklet: 단일 작업을 수행하는 경우에 사용합니다.
    • Chunk: 대용량 데이터를 chunk(청크)로 나누어 처리하며, ItemReader, ItemProcessor, ItemWriter를 사용합니다.
      • ItemReader: 데이터 읽기
      • ItemProcessor: 데이터 가공
      • ItemWriter: 데이터 쓰기

역할:

  • 비즈니스 로직 구현: 배치 처리에 필요한 구체적인 로직을 작성합니다.
  • 배치 작업 흐름 정의: Job과 Step의 순서 및 조건을 설정하여 전체 배치 프로세스를 구성합니다.

2. Batch Core Layer

  • Spring Batch의 핵심 기능을 제공하는 부분으로, 배치 작업 실행과 관리를 담당합니다.

주요 구성 요소:

  • JobLauncher: 배치 Job을 실행시키는 인터페이스로, Job을 시작할 때 사용합니다.
  • JobRepository: Job과 Step의 메타데이터 및 실행 정보를 저장하고 관리합니다.
  • JobExecution: Job 실행의 상태와 결과를 나타내는 클래스입니다.
  • StepExecution: Step 실행의 상태와 결과를 나타냅니다.
  • JobBuilder, StepBuilder: Job과 Step을 생성하고 구성하는 빌더 클래스입니다.

역할:

  • 배치 작업 실행 제어: Job과 Step의 실행 흐름을 제어하고 관리합니다.
  • 상태 관리: 실행 중인 Job과 Step의 상태 정보를 유지하여 재시도나 재시작 기능을 지원합니다.

3. Batch Infrastructure Layer

  • 배치 처리에 필요한 인프라 기능을 제공합니다. 데이터베이스나 파일 시스템과의 데이터 입출력, 트랜잭션 관리 등을 담당합니다.

주요 구성 요소:

  • DataSource: 데이터베이스 연결을 관리하고 제공하는 구성 요소입니다.
  • TransactionManager: 트랜잭션 경계를 정의하고 관리하여 데이터의 일관성을 유지합니다.
  • JobRepository: Job과 Step의 메타데이터를 실제로 저장하고 조회하는 구현체로, 주로 데이터베이스를 사용합니다.
  • Resource Management: 파일 시스템, 메시징 시스템 등 외부 리소스와의 연동을 지원합니다.
  • Partitioner, Remote Chunking: 분산 처리 및 병렬 처리를 지원하는 구성 요소입니다.

역할:

  • 외부 시스템과의 통합: 데이터베이스, 파일, 메시지 큐 등과 상호 작용하여 데이터를 읽고 씁니다.
  • 트랜잭션 및 리소스 관리: 안정적인 배치 처리를 위해 필요한 인프라스트럭처 서비스를 제공합니다.

 

위 처리 흐름 그림에서 보이듯 Batch Core Layer 에 속하는 JobLauncher가 배치 Job을 실행시킵니다. 이 Job은 1:N 으로 구성된 Step을 실행시키게 됩니다. 이 Step은 tasklet 또는 chunk로 구성되며 그리에서는 chunk로 구성된 예시를 보여주고 있습니다. 이 Chunk들은 데이터를 읽고, 가공하고 쓰는 과정을 거치며 chunk는 기본적으로 반복해서 수행하게 됩니다. (Chunk와 tasklet에 대해서는 다음 글에서 더 자세히 다루겠습니다.) 해당 Job과 Step에 관한 정보는 JobRepository 인터페이스에 저장,관리됩니다. 위 그림에서보면 Application Layer는 Batch Core Layer의 기능을 사용해서 배치 작업을 정의하고 실행하고 있습니다. 그림에 자세히 나오진 않았지만 Batch Infrastructure Layer는 데이터베이스 접근, 트랜잭션 관리 등을 통해서 배치 처리에 필요한 인프라를 제공하고 있습니다. 이를 통해 레이어 구성요소의 관계를 통해 배치 처리 흐름을 파악할 수 있습니다.