Server/Spring batch 4

스프링 배치 Scope, Context 이해하기!

아래는 Spring Quartz + Spring Batch를 사용하여 만든 주식 1분봉 수집 서버 코드 일부이다. https://github.com/violetbeach/kis-trading-server/blob/master/boot/data-processing-server/src/main/java/com/violetbeach/kistradingserver/boot/processing/adapter/in/batch/job/DataProcessingStepConfiguration.java 코드를 요약하면 아래와 같다. Batch Job이 @Bean으로 등록되어 있다. 여기서 보면 Step에서 SpEL을 사용해서 stepExecutionContext에 접근하고 있다. 이게 내부적으로 어떻게 동작하는 것인지 ..

Server/Spring batch 2023.07.15

우아한 스프링 배치 강연내용 정리 (+ 통합 테스트 SpringTestContext Caching 팁!)

배달의 민족의 주문, 포인트, 정산 시스템에서 향로님께서 적용하면서 얻은 팁을 아래 강연에서 발표했다. https://www.youtube.com/watch?v=_nkJkWVH-mo Web vs Batch Web 실시간 처리를 위주로 한다. 상대적인 처리 속도를 가진다. QA가 용이하다. Batch 후속 처리를 위주로 한다. 절대적인 처리 속도가 측정된다. QA가 복잡하다. (DB나 자바 코드를 까봐야, 문제를 찾을 수 있기 때문) 철저한 테스트 코드가 반드시 필요하다. 배치 애플리케이션이 필요한 근거 아래의 경우에는 필수적으로 배치 애플리케이션이 필요할 수 있다. 일정 주기로 실행되어야 할 때 실시간 처리가 어려운 대량의 데이터를 처리할 때 배민에서는 매출의 경우 5억건 정도가 있고, 매출 상세의 경우..

Server/Spring batch 2023.05.02

Spring Batch - 기본 주요 도메인 이해하기!

Job Job은 배치 계층에서 가장 상위에 있는 개념으로 하나의 작업 자체를 의미한다. Job Configuration을 통해 생성되고 하나의 작업을 어떻게 구성하고 실행할 것인지 전체적으로 명세한다. 여러 개의 Step으로 구성되기 때문에 최소한 1개 이상의 Step을 구성해야 한다. Job의 경우 빈으로 등록한 후 수동으로 실행시킬 수도 있고, SpringBoot의 BatchAutoConfiguration에서 기본으로 빈으로 등록한 Job을 수행한다. Job 구현체 Job 구현체는 크게 두 가지로 나뉜다. SimpleJob 순차적으로 Step을 실행시키는 Job 모든 Job에서 유용하게 사용할 수 있는 표준 기능을 가지고 있다. FlowJob 특정한 조건과 흐름에 따라 Step을 구성하여 실행시키는 ..

Server/Spring batch 2023.04.24

스프링 배치(Spring Batch) 이해하기!

Spring Batch 자바에서는 표준으로 제공하는 일괄 처리(batch)를 위한 기술이 존재하지 않았다. 스프링 배치(Spring Batch)는 이러한 문제를 해결하기 위해서 Spring Source와 Accenture가 공동으로 개발하여 탄생했다. (Accenture는 배치 아키텍처를 구현하면서 쌓은 기술적인 경험과 노하우를 가진 기업) 배치(Batch) 활용 사례 아래의 처리가 필요할 때 배치를 사용할 수 있다. 주기적으로 배치 프로세스를 커밋 적당한 양의 데이터로 분할 처리 동시 다발적인 Job의 병렬 처리 의존 관계가 있는 step 여러 개를 순차적으로 처리 조건적 Flow 구성을 통한 체계적이고 유연한 배치 모델 구성 반복, 재시도, Skip 처리 작업의 진행상황 및 로그 추적 Batch P..

Server/Spring batch 2023.03.27