🎯 하루 매출을 계산하는 Job 구현해야 할 정산 로직 Job 요구 사항을 먼저 살펴보겠습니다.매출 집계: 가게별 총 매출, 환불 금액, 순매출을 계산합니다.수수료 계산: 각 가게에 적용되는 수수료(예: 결제 수수료, 플랫폼 수수료 등)를 계산하여 최종 정산 금액을 계산합니다.할인 처리: 특정 프로모션이나 할인 이벤트가 적용된 경우, 이를 반영하여 정산 금액을 계산합니다.이전 포스팅에서 구현한 NormalizedTransaction 테이블을 조회해 수수료 계산, 할인 이벤트 등을 적용한뒤, 각 가게별 총 매출, 환불 금액, 순 매출 을 집계해야 합니다. 💡 통계 관련 로직은 어떻게 구현하지 ? [ 통계 관련 로직 구현을 위한 아이디어 ]reader 와 processor 는 1건씩 조회해 처리 합니다..
🎯 배치 프로세스 설계 이전 포스팅에 적어둔 요구사항에 맞춰 위 두개의 Job 을 만들어보겠습니다. 요구사항이 무엇인지 궁금하신 분들은 아래 링크를 참고해주세용 https://comumu.tistory.com/118 [Spring Batch] Spring Batch 로 정산 시스템 만들어보기 (1)🎯 들어가기 앞서..이번 여름 방학때 Spring Batch 에 대해 공부해봤는데 이를 다시 한번 복습하고 깊게 공부하는 것을 목적으로 시작한 프로젝트 입니다.만들어야 하는 배치 프로그램 요구 사항을comumu.tistory.com 먼저 만들어야할 Job 을 분리해봤습니다.(1) 데이터 수집 및 전처리 Job : 거래 데이터를 DB 에서 수집해 데이터의 유효성을 검증하는 로직을 가집니다. 유효성이 검증이 통..
🎯 들어가기 앞서..이번 여름 방학때 Spring Batch 에 대해 공부해봤는데 이를 다시 한번 복습하고 깊게 공부하는 것을 목적으로 시작한 프로젝트 입니다.만들어야 하는 배치 프로그램 요구 사항을 정하고 이에 맞춰 하나씩 차근차근 해결해봅시다! 🎯 요구 사항## 🎯 Spring Batch 를 이용한 정산 시스템 프로젝트----```배달 서비스(배달의 민족, 요기요)를 참고해 관리자(Admin)와 가게 업주(Owner)의 주문 정보와 정산 정보를 조회하고 관리하는프로그램입니다.대용량 데이터 처리를 위해 ```###⚒️ 기술 스택----**Backend** : `Spring Boot`, `JPA`, `QueryDSL` **Database** : `MySQL` **Frontend** : `Thy..
🎯 통합 테스트Spring Batch 를 이용한 Job 에 대한 통합 테스트 구현방법에 대해 알아보겠습니다. (단위 테스트는 추후 포스팅에서 다루겠습니다.)처음 배치 프로그램에 대한 테스트 코드를 작성한만큼 삽질도 정말 많이해서 이 글을 본 여러분들은 그러지 않으셨으면 좋겠습니다 ㅜ스프링 버전은 3.x.x, Spring Batch 는 5.x.x, 테스트 코드는 Junit 5 를 사용했습니다. 구현한 Job 코드는 다음과 같습니다.🎯 Spring Batch 코드 ✅ CreateDateJobParameterpackage study.batch.parameters;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.extern.slf4j.S..
🎯 요구 사항 구현해야하는 배치 프로그램은 다음과 같습니다. 주문 내역을 조회 후 "특정 날짜" 에 해당 하는 주문들을 별도의 테이블에 저장하는 프로그램을 만들어주세요! 라는 요구사항이 있다고 가정하고 한번 예제 코드를 만들어 보겠습니다. 🎯 예제 코드 구현 ✅ Orderpackage study.batch.entity;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.time.LocalDateTime;import java.util.List;@Entity@Setter@Getter@Table(name = "OrderTable")public class Order { @Id @GeneratedVa..
🎯 예제 코드 만들어보기저번 포스팅에선 학습한 내용을 기반으로 배치 프로세스를 만들어보겠습니다. (Spring Batch 5) https://comumu.tistory.com/113 [Spring Batch] Chunk 와 ItemReader & ItemProcessor & ItemWriter🎯 Chunk 란 무엇일까 ?Spring Batch 에서 Chunk 지향처리 (Chunk-Oriented Oricessing) 는 대용량의 데이터를 효율적으로 처리하기 위한 방법입니다. 데이터 처리 작업을 읽기, 처리, 쓰기 세 단계로 나눈 뒤comumu.tistory.com 먼저 그전에 배운 내용을 간단히 정리하면 Spring Batch 는 Chunk 지향 처리를 합니다. 즉, 한 번에 하나씩 데이터를 읽어 C..
🎯 Chunk 란 무엇일까 ?Spring Batch 에서 Chunk 지향처리 (Chunk-Oriented Oricessing) 는 대용량의 데이터를 효율적으로 처리하기 위한 방법입니다. 데이터 처리 작업을 읽기, 처리, 쓰기 세 단계로 나눈 뒤 일정한 크기(Chunk) 로 데이터를 나눠 처리 합니다. 이러한 처리 방식은 메모리 사용을 최적화 하고, 대규모 데이터 처리에서 성능을 향상시킬 수 있습니다. Chunk 처리 순서는 다음과 같습니다. (1) ItemReader 에서 한번의 아이템을 읽고 읽은 아이템을 ItemProcessor 로 가공합니다.(2) 읽어진 아이템은 Chunck 라는 단위로 쌓이고, 정의된 Chunk 사이즈만큼 쌓이게 되면 ItemWriter 로 일괄 전달됩니다.(3) 트랜잭션 작..
🎯 JobParameter 와 ScopeSpring Batch 은 외부 혹은 내부에서 파라미터를 받아 여러 Batch 컴포너트에서 사용할 수 있게 Job Parameter 를 지원합니다. Job Parameter 를 사용하기 위해선 Spring Batch 전용 Scope 를 선언해야합니다. @StepScoe 와 @JobScope 두가지가 있고 사용방법은 다음과 같습니다. SpEL 로 선언해 다음과 같이 사용합니다.@Value("#{jobParameters[파라미터명]}") ✅ JobScope 사용 예제package batch.example.job;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.spring..
Job 플로우 제어하기 🎯 여러개의 Step 들간 순서, 흐름 제어해보기 가장 먼저 소개할 방법은 Next 입니다. 쉬운 개념이니 코드부터 확인해보겠습니다. package batch.example.job;import lombok.extern.slf4j.Slf4j;import org.springframework.batch.core.Job;import org.springframework.batch.core.Step;import org.springframework.batch.core.job.builder.JobBuilder;import org.springframework.batch.core.repository.JobRepository;import org.springframework.batch.core.ste..
Spring Batch 란 무엇일까? (Spring Batch 5 버전에 대한 포스팅이 많이 없어 아래 블로그를 참고하며 정리한 내용입니다. ) https://jojoldu.tistory.com/324?category=902551 1. Spring Batch 가이드 - 배치 어플리케이션이란?Spring Batch In Action이 2011년 이후 개정판이 나오지도 않고 (2019.03 기준), 한글 번역판도 없고, 국내 Spring Batch 글 대부분이 튜토리얼이거나 공식 문서 중 일부분을 짧게 번역한 내용들이라 대용량 시jojoldu.tistory.com 🎯 배치(Batch) 란 ?배치(Batch) 는 일괄처리 라는 의미를 가지고 있습니다. 즉, 데이터를 실시간으로 처리하는 것이 아닌 일괄적으로..