-
[Spring Batch] 스프링 배치란 / 이용하면 좋은 이유Java/Spring Batch 2021. 5. 10. 22:17
배치?
- 일괄적으로 많은 데이터를 처리하는 것
- 예시
- 은행에서 생성되는 거래명세서와 퇴직연금명세서
- 단골 쇼핑몰에서 보내는 쿠폰이 포함된 메일
배치처리를 이용하면 좋은 이유
- 실제 처리가 시작되기 전에 필요한 정보를 미리 수집할 수 있다.
- 거래가 이뤄질 때마다 바로 월별 거래명세서를 인쇄해내는 것이 합리적일까? 월말까지 기다려서 한 번에 거래 내역을 조사하는 것이 더 합리적이다.
- 사업적으로 도움이 된다.
- 대부분의 사람들은 구매 버튼을 클릭하자마자 온라인으로 구입하려는 상품이 배송 트럭에 실렸으면 한다.
- 그렇지만 이는 소매업자에게 최선이 아닐 수도 있다. (내생각에는 고객에게 더 도움이 될 것 같다. 환불 비용은 고객이 부담해야 할테니..) 고객이 마음을 바꿔 주문을 취소할 때, 아직 배송하기 전이라면 훨씬 더 저렴한 비용으로 취소할 수 있다.
- 자원을 더 효율적으로 활용할 수 있다.
- 데이터 과학 분야의 사례가 좋은 예다.
- 일반적으로 데이터 모델 처리는 두 단계로 나뉜다.
- 첫 번째 단계는 모델의 생성이다. 모델을 생성하려면 대량 데이터를 수학적으로 집중처리해야 하므로 시간이 많이 걸릴 수 있다.
- 두 번째 단계는 생성된 모델을 놓고 새로운 데이터를 평가하거나 점수를 매기는 것이다. 두번째 단계는 매우 빠르다.
- 따라서 첫 번째 단계에서는 스트리밍 시스템이 사용할 데이터 모델을 외부에서 배치 처리를 수행해 생성하고, 두 번째 단계에서는 스트리밍 시스템이 해당 결과를 실시간으로 사용하게 하는 것이 합리적이다.
Spring Batch Framework
스프링 배치에는 데이터 유효성 검증, 출력 포매팅, 복잡한 비즈니스 규칙을 재사용 가능한 방식으로 구현하는 기능, 대규모 데이터셋 처리 기능이 구현돼 있다.
스프링 배치 프레임워크는 세 가지 레이어로 구성되어 있다.
- 애플리케이션, 레이어, 코어
스프링 배치 아키텍처 - job > step
- Spring Boot에는 JobLauncherCommandLineRunner라는 컴포넌트가 있다.
- 이 컴포넌트는 스프링배치가 클래스 경로에 있다면 실행 시에 로딩되며, JobLauncher를 사용해 ApplicationContext에서 찾아낸 모든 잡을 실행한다. 메인 메서드에서 스프링 부투를 부투스트랩할 때 ApplicationContext가 생성되고, JobLauncherCommandLineRunner가 실행됐으면, 잡이 수행 된다.
스프링 배치 완벽 가이드 / 마이클 미넬라 지음
'Java > Spring Batch' 카테고리의 다른 글
[Spring Batch] ItemReader(4) - 기존서비스 (0) 2021.06.13 [Spring Batch] ItemReader(3) - 저장프로시저(SP, Stored Procedure) (0) 2021.05.31 [Spring Batch] ItemReader(2) - JPA (0) 2021.05.30 [Spring Batch] ItemReader(1) - JDBC (0) 2021.05.30 [Spring Batch] Step (0) 2021.05.15