BackEnd/Spring Boot

Spring Batch

Raconer 2023. 7. 19. 15:17
728x90

Spring Batch

대량의 데이터처리하는데 사용되오픈 소스 배치 프레임워크입니다.
Spring 프레임워크의 일부로 개발되었으며, 데이터베이스, 파일 과 같은 다양한 소스로부터 대량의 데이터읽어 처리하고, 가공한 데이터다시 저장하거나 출력하는 작업을 수행하는데 주로 사용됩니다.

  • 확장성과 성능
    • 대량의 데이터를 효율적으로 처리하기 위한 다양한 기능패턴제공하여 성능확장성보장
    • Chunk 기반 처리 방식을 통해 대용량 데이터 처리를 안정적으로 수행 가능
  • 트랜잭션 관리
    • 작업의 성공 또는 실패롤백재시작지원하여 데이터무결성안정성보장
  • Chunk 지향 처리
    • 대용량 데이터를 처리할 때 데이터를 묶어서(Chunk) 트랜잭션 단위로 처리하므로 OutOfMemoryError 등의 메모리 관련 문제를 예방하고 처리 성능을 향상
  • 재시작 기능
    • 장애 발생 시 지정된 지점부터 재시작할 수 있는 기능을 제공하여 안정적인 데이터 처리를 보장
  • 스프링 통합
    • Spring 프레임워크와 완전히 통합되어 Spring의 IoC(Inversion of Control) 컨테이너, AOP(Aspect-Oriented Programming) 등을 활용
  • 대표적인 구성 요소
    • Job
      • Spring Batch에서 처리 작업최상위 단위
      • 하나의 Job여러 개의 Step으로 구성
      • 배치 처리시작점정의하며, 하나 이상Step순차적으로 실행
      • 재시작, 중지, 완료 상태관리하고 모니터링할 수 있는 기능제공
    • Step
      • Spring Batch 처리 작업의 실행 단위
      • 하나StepItemReader(데이터를 읽기), ItemProcessor(데이터를 가공), ItemWriter(데이터를 저장)구성
      • Chunk 지향 처리를 통해 대량의 데이터작은 단위끊어서 처리
      • 재시작 가능한 단위로, 트랜잭션 관리통해 데이터 처리의 무결성보장
    • ItemReader
      • 데이터읽어오는 역할
      • 데이터베이스, 파일, REST API 등 다양한 소스에서 데이터를 읽어올 수 있다.
      • 읽어온 데이터StepItemProcessor전달
    • ItemProcessor
      • 읽어온 데이터가공하거나 비즈니스 로직적용
      • 읽어온 데이터원하는 형태가공하거나 유효성 검사수행
      • 가공된 데이터StepItemWriter전달
    • ItemWriter
      • 가공된 데이터저장하거나 출력하는 역할
      • 데이터베이스저장하거나 파일출력하는 작업수행
728x90

'BackEnd > Spring Boot' 카테고리의 다른 글

구독 QueryDSL 및 Redis 사용 개발  (0) 2023.08.27
JPA & QueryDSL 사용한 Project  (0) 2023.08.11
Interceptor, Filter 차이  (0) 2023.07.04
JPA 적응기_2(Basic편)  (0) 2023.06.11
JPA 기본 log사용하기  (0) 2023.06.11