JavaStudy/SpringBatch

[SpringBatch] 스프링 배치란?

LeeDaniel 2022. 11. 14. 10:13
개요
엔터프라이즈 시스템의 일상적인 운영에 필수적인
강력한 배치 애플리케이션을 개발할 수 있도록 설계된 가볍고 포괄적인 배치 프레임워크입니다.
Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등
대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공합니다.
또한 최적화 및 파티셔닝 기술을 통해
대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공합니다.
단순하고 복잡한 대용량 일괄 작업은
확장성이 뛰어난 방식으로 프레임워크를 활용하여 상당한 양의 정보를 처리할 수 있습니다.

Spring Batch는 스케줄링 프레임워크가 아닙니다.
상용 및 오픈 소스 공간 모두에서 사용할 수 있는
좋은 엔터프라이즈 스케줄러(예: Quartz, Tivoli, Control-M 등)가 많이 있습니다.
스케줄러를 대체하는 것이 아니라 스케줄러와 함께 작동하기 위한 것입니다.


 배경
오픈 소스 소프트웨어 프로젝트 및 관련 커뮤니티가
웹 기반 및 마이크로 서비스 기반 아키텍처 프레임워크에 더 많은 관심을 기울이는 동안
Java 기반 배치 처리 요구 사항을 수용하기 위해
재사용 가능한 아키텍처 프레임워크에 대한 관심이 현저히 부족했습니다.
재사용 가능한 표준 배치 아키텍처의 부재로 인해
클라이언트 엔터프라이즈 IT 기능 내에서 개발된 많은 일회성 사내 솔루션이 확산되었습니다.

SpringSource(현재 Pivotal)Accenture는 이를 변경하기 위해 협력했습니다.
일괄 아키텍처 구현에 대한 Accenture의 실무 산업 및 기술 경험,
SpringSource의 깊이 있는 기술 경험,
Spring의 입증된 프로그래밍 모델이 함께 자연스럽고 강력한 파트너십을 통해
엔터프라이즈 Java의 중요한 격차를 메우기 위한 고품질의 시장 관련 소프트웨어를 만들었습니다.
두 회사는 Spring 기반 배치 아키텍처 솔루션을 개발하여
유사한 문제를 해결하는 많은 클라이언트와 협력했습니다.
이는 클라이언트가 제기한 실제 문제에 솔루션을 적용할 수 있도록 하는
몇 가지 유용한 추가 세부 정보와 실제 제약 조건을 제공했습니다.

Accenture와 SpringSource 간의 공동 작업은
일괄 응용 프로그램을 만들 때 엔터프라이즈 사용자가 일관되게 활용할 수 있는
소프트웨어 처리 접근 방식, 프레임워크 및 도구의 표준화를 촉진하는 것을 목표로 했습니다.
엔터프라이즈 IT 환경에 입증된 표준 솔루션을 제공하려는
회사 및 정부 기관은 Spring Batch의 이점을 누릴 수 있습니다.


 사용 시나리오
일반적인 배치 프로그램은 일반적으로 다음과 같습니다.
◾데이터베이스, 파일 또는 큐에서 많은 수의 레코드를 읽습니다.
◾어떤 방식으로 데이터를 처리합니다.
◾수정된 형식으로 데이터를 다시 씁니다.

Spring Batch는 이 기본 배치 반복을 자동화하여
일반적으로 사용자 상호 작용 없이 오프라인 환경에서
유사한 트랜잭션을 세트로 처리할 수 있는 기능을 제공합니다. 
Batch 작업은 대부분의 IT 프로젝트의 일부이며
Spring Batch는 강력한 엔터프라이즈급 솔루션을 제공하는 유일한 오픈 소스 프레임워크입니다.

비즈니스 시나리오
◾주기적으로 일괄 처리 커밋
◾동시 일괄 처리: 작업의 병렬 처리
◾단계적 엔터프라이즈 메시지 기반 처리
◾대규모 병렬 배치 처리
◾실패 후 수동 또는 예약된 재시작
◾종속 단계의 순차적 처리(워크플로 기반 배치에 대한 확장 포함)
◾부분 처리: 레코드 건너뛰기(예: 롤백 시)
◾전체 배치 트랜잭션, 배치 크기가 작거나 기존 저장 프로시저/스크립트가 있는 경우

기술적 목표
◾일괄 개발자는 Spring 프로그래밍 모델을 사용합니다.
   비즈니스 로직에 집중하고 프레임워크가 인프라를 처리하도록 합니다.
◾인프라, 배치 실행 환경 및 배치 애플리케이션 간의 문제를 명확하게 분리합니다.
◾모든 프로젝트가 구현할 수 있는 인터페이스로 공통의 핵심 실행 서비스를 제공합니다.
◾'즉시' 사용할 수 있는 핵심 실행 인터페이스의 단순하고 기본 구현을 제공합니다.
◾모든 계층에서 스프링 프레임워크를 활용하여 서비스를 쉽게 구성, 사용자 정의 및 확장할 수 있습니다.
◾기존의 모든 핵심 서비스는 인프라 계층에 영향을 주지 않고 쉽게 교체하거나 확장할 수 있어야 합니다.
◾Maven을 사용하여 구축된 애플리케이션과 완전히 분리된 아키텍처 JAR로 간단한 배포 모델을 제공합니다.


스프링 배치 아키텍처
Spring Batch는 확장성과 다양한 최종 사용자 그룹을 염두에 두고 설계되었습니다. 
아래 그림은 최종 사용자 개발자를 위한 확장성과 사용 용이성을 지원하는 계층화된 아키텍처를 보여줍니다.
Application : Spring Batch를 사용하여 개발자가 작성한 모든 배치 작업과 사용자 정의 코드
Batch Core : 배치 작업을 시작하고 제어하는 ​​데 필요한 핵심 런타임 클래스를 포함
Batch Infrastructure : 개발자와 애플리케이션에서 사용하는 일반적인 Reader와 Writer 그리고 RetryTemplate과 같은 서비스를 포함

스프링 배치는 계층 구조가 위와 같이 설계되어 있기 때문에
개발자는 Application계층의 비즈니스 로직에 집중할 수 있고,
배치의 동작과 관련된 것은 Batch Core에 있는 클래스들을 이용하여 제어할 수 있다.
 
반응형