JAVA/Spring

[Spring] Spring Batch(1)

코딩공대 2023. 4. 26. 00:22
728x90


1. 배치 애플리케이션?

 

  • 개발자가 정의한 작업을 일괄 처리하는 애플리케이션이다.

    예를 들어, 한 기업에서 사전 예약 이벤트를 진행했는데 신청한 유저의 데이터 수는 100만 건이라고 가정하면 사전 예약 이벤트를 접수한 모든 유저에게 메일을 보내야 한다. 이럴 때 사용하는 것이 Spring Batch이다.

    다른 예로 월말 정산을 처리하거나, 따로 적재된 데이터베이스를 통합하는 작업, 은행 점검등이 있다.

    로깅 / 추적, 트랜젝션 관리, 작업 처리 통계, 작업 플로우 지정, 리소스 관리 등 대량의 레코드를 처리하는데 필수적인 기능을 재사용 가능한 형태로 제공한다.

    스프링 배치는 Java Based Configuration이 가능하다. XML 없이도 POJO 기반 개발 접근 방식으로 개발 가능한 의미이다.


  • Batch Application VS Web Application

    일반적으로 클라이언트 또는 웹 앱 같은 GUI 기반 프로그래밍에서의 문제 해결 방식에는 익숙하다.

    보안 문제, 데이터 유효성 검증, 사용자 친화적 오류 처리, 예측할 수 없는 사용 패턴으로 인한 리소스 사용률 급증 등 의 문제를 고려해야 한다.

    하지만 Batch는 위의 대부분의 문제를 고려할 필요가 없다.
    물론 보안이나 데이터 유효성 처리, 트래픽 사용량이나 사용자 중심의 에러 처리를 고려하지 않아도 된다는 의미이다.
    확실한 로그와 피드백용 알림만을 사용해서 정확하게 에러를 인지하기만 하면 된다.


2. Batch VS Quartz

 

  • Spring Quartz는 스케줄러의 역할  /  Spring Batch는 대용량 데이터 처리


  • 따라서 Spring Batch와 Spring Quartz를 같이 사용한다.
    정해진 스케줄마다 Quartz가 Spring Batch를 실행하는 구조이다.


참고 : https://github.com/jojoldu/spring-batch-in-action

'JAVA > Spring' 카테고리의 다른 글

[Spring] Spring Batch(3)  (0) 2023.05.19
[Spring] Spring Batch(2)  (0) 2023.04.28
[Spring] Spring Boot 3.0  (0) 2023.03.26
[Spring] Java Spring?  (0) 2023.03.23
[Spring Web Flux] Project Reactor  (0) 2022.11.30