spring Batch 3

[Troubleshooting] Spring Batch 최적화

csv파일을 읽고 JPARepository를 활용하여 Batch Job을 진행하던 중, 적게는 5초, 길게는 40초 동안 pc가 멈추는 상황이 발생했고, Batch최적화의 필요성을 느꼈습니다. 사용하고 있던 설정은, chunk size 1000, jpaRepository 였습니다. 당장 비동기 처리를 적용하여 속도를 향상 시킬 수도 있겠지만, 더 세세한 최적화가 필요해보였습니다. 1. Spring Data JPA Batch Insert DB에 데이터를 삽입하는 등의 요청을 실시하는 것은 많은 비용이 듭니다. 하나의 요청에 한 번의 round-trip이 발생하고, 1000개의 요청에 1000번의 round-trip이 발생합니다. (db와 server간의 왕복을 round-trip이라고 합니다) 따라서 이를..

Troubleshooting 2024.02.27

[Spring Batch] Multiple Data source를 활용한 Spring Batch

한국석유공사-오피넷(외부 api)로부터 전국 유가 평균, 지역별 저렴 주유소 등의 json data와,한국석유공사-오피넷에서 전체 주유소 정보 및 주유소 가격을 csv파일로 받아서 DB에 삽입하기 위해,Spring Batch을 구현했습니다.다중 데이터 소스프로젝트에 다중 데이터 소스를 사용한 이유는 다음과 같습니다.Batch Job을 진행하는 동안 DB에 부하가 가해질 수 있으며,부하가 조회 성능을 저하시킬 우려가 있었습니다.따라서,데이터 입력에는 MariaDB를 사용하였고,데이터 조회에는 Redis를 사용하여 성능을 높였습니다. 인메모리형 데이터 스토리지인 Redis를 캐시 스토리지로 사용한 이유는 Redis가 2ms 미만의 조회 성능을 지녔고,다양한 자료형을 다룰 수 있으며, NoSQL로 확장성 및 ..

Java 2024.02.23

[SpringBatch] 기본 개념 및 예제(csv 파일)

대규모 데이터에 대해 데이터를 일괄적으로 처리하고,처리 중 발생한 오류를 처리하며,실패한 작업을 원활하게 재시작하는 것은 중요합니다. Spring Batch는 대규모 데이터 처리를 위한 Spring 프레임워크입니다. 일반적으로 대규모 트랜잭션을 통해 데이터를 저장할 때 사용합니다. 트랜잭션을 추적하여 관리하고, 트랜잭션 최적화 및 파티셔닝 기술을 통한 고성능 배치 작업을 통해 작업 재시작 등 대용량 레코드 처리에 필수적인 기능을 제공합니다. Job은 배치 작업을 의미합니다. Job에는 여러 Step이 있습니다. 은행에서 매일 고객의 입금, 출금 내역을 확인한 이후 요약하여 저장하는 Job을 한다면, Step1.내역을 확인하고 Step2.요약하여 Step3.저장하는 단계로 나뉠 것입니다. 더 구체적으로 살..

Java 2024.01.25
728x90
반응형