반응형
소개
Spring Batch는 대용량의 데이터를 처리하기 위한 일괄 처리(Batch Processing) 프레임워크로서, Java 기반의 프레임워크입니다. Spring Batch는 기업에서 주로 발생하는 대용량 데이터 처리 작업을 간편하게 구현하고, 관리할 수 있도록 도와줍니다. 주로 일괄 처리 작업, 예를 들면 대용량 데이터의 추출, 변환, 로딩(ETL) 작업, 정기적인 보고서 생성, 데이터 마이그레이션 등을 처리하는 데 사용됩니다.
아키텍처
- Application:
- 목적: Batch 애플리케이션의 비즈니스 로직과 작업 흐름을 구현합니다.
- 기능: 실제 비즈니스 로직이 위치하는 곳으로, 배치 작업의 흐름을 제어하고 비즈니스 논리를 실행합니다. 주로 Job 및 Step의 정의, 비즈니스 로직 수행을 위한 서비스, 트랜잭션 관리 등이 여기에 해당합니다.
- Core:
- 목적: Batch 프레임워크에서 제공되는 핵심 기능을 포함합니다.
- 기능: Spring Batch와 같은 프레임워크가 제공하는 일반적인 일괄 처리 기능을 담당합니다. 주로 Job, Step, ItemReader, ItemProcessor, ItemWriter 등의 인터페이스와 이를 구현한 구체적인 클래스들이 여기에 속합니다. 이 모듈은 배치 애플리케이션의 핵심 구조를 정의하고, 재사용 가능한 일괄 처리 로직을 추상화합니다.
- Infrastructure:
- 목적: 배치 애플리케이션을 실행하는 데 필요한 기초적인 시스템 및 환경 구성을 담당합니다.
- 기능: 주로 배치 작업을 실행하기 위한 환경 설정, 데이터베이스 연동, 로깅, 예외 처리, 스케줄링, 보안, 성능 최적화, 메시징 및 통합과 같은 기반적인 기능들을 다룹니다. 이 모듈은 배치 애플리케이션을 안정적으로 운영하기 위한 인프라스트럭처를 제공합니다.
핵심 구성 요소
- Job: 하나의 일괄 처리 작업을 나타내는 최상위 개념입니다. 일반적으로 여러 단계(Step)로 구성되어 있습니다.
- Step: 일괄 처리 작업에서 수행되는 단위입니다. 각 단계는 하나 이상의 리더(Reader), 프로세서(Processor), 라이터(Writer)로 구성될 수 있습니다.
- ItemReader: 데이터를 읽어오는 역할을 수행합니다.
- ItemProcessor: 읽어온 데이터를 가공하거나 변환하는 역할을 수행합니다.
- ItemWriter: 가공된 데이터를 저장하거나 외부 시스템에 전송하는 역할을 수행합니다.
- JobRepository:: 배치 작업의 상태, 실행 이력, 파라미터 등을 관리합니다, 이 정보들은 애플리케이션의 재시작이나 모니터링에 사용됩니다.
특징
- Reusability (재사용성): Spring Batch는 재사용 가능한 구성 요소를 제공하여 비슷한 일괄 처리 작업을 쉽게 구현할 수 있도록 돕습니다.
- 설정 및 확장성: XML 또는 JavaConfig를 사용하여 작업을 선언적으로 설정할 수 있으며, Spring의 다양한 확장 포인트를 통해 사용자 정의 로직을 쉽게 추가할 수 있습니다.
- 프로세싱 과정의 간소화: Spring Batch는 대용량 데이터 처리를 위한 기본 프로세스를 간편화하는데 도움을 줍니다. 이는 아이템 기반 처리 모델을 사용하여 대용량 데이터를 청크(chunk) 단위로 나누어 처리하는 방식을 채택하고 있습니다.
- 트랜잭션 관리: Spring Batch는 트랜잭션을 지원하여 일괄 처리 프로세스 중에 발생할 수 있는 문제에 대해 안전하게 데이터를 처리할 수 있도록 합니다.
- 간단한 모니터링 및 관리: Spring Batch는 일괄 처리 작업의 실행 상태를 모니터링하고 관리하기 위한 간단한 API를 제공합니다.
반응형
'개발 > Spring Boot' 카테고리의 다른 글
[Spring Boot] jpa n+1 문제 (1) | 2023.12.05 |
---|---|
[Spring Boot] Spring에서 사용된 디자인 패턴 (0) | 2023.12.05 |
[Spring Boot] Junit이란? (0) | 2023.11.20 |
[Spring Boot] Spring Security란? (0) | 2023.11.10 |
[Spring Boot] Spring Boot란 (0) | 2023.11.08 |