전체 글 17

Spring Batch - Job은 정말 실패한 시점부터 재실행될 수 있을까?

이번에는 Spring Batch 가 정말 실패한 시점부터 재실행되는지, 어떻게 실패한 지점부터 재실행될 수 있는지에 대해 알아보자. Spring Batch 가 아닌 주기적인 작업이 필요한 API 를 호출해 주는 방식의 스케줄러가 구현이 되어 있다고 가정해 보자. 만약, 스케줄러가 API 를 호출한 후 모종의 이유(에러 발생)에 의해 실행이 중단된 경우, 해당 처리를 성공적으로 완료시키기 위해선 동일한 호출을 다시 호출해야 하는 상황이 생긴다. 요청이 처리됨과 동시에 중단이 된거라면 반복 호출해도 크게 문제가 없을 수 있겠으나, 만약 처리해야 하는 10개의 데이터 중 5개만 처리하고, 중단된 거라면 반복 호출 시 불필요한 작업을 반복한다. 뿐만 아니라, 최상위가 아닌 Dao의 단위로 트랜잭션까지 걸어준 상..

Spring 2023.03.05

Spring Batch - JobParameters

JobParameters를 사용하기 위해선 반드시 @JobScope, @StepScope와 같은 어노테이션을 지정해 주어야 한다. @JobScope, @StepScope 각각의 어노테이션이 무엇인지 알아보기에 앞서. 저 Scope가 의미하는 것에 대해서 먼저 알아보도록 하자. Bean Scope Scope는 범위란 의미를 지니고 있다. 즉, bean 이 생성하고, 소멸하는 시점까지의 활동 영역으로 재해석될 수 있는데, Spring 에서는 아래와 같은 5가지의 기본 Bean Scope 가 제공된다. Singleton Scope: 가장 기본 유형으로 스프링 컨테이너 내에 하나의 인스턴스만 존재하며, 항상 동일한 인스턴스를 반환한다. Prototype Scope: 스프링 컨테이너 내에서 빈의 새로운 인스턴스가..

Spring 2023.02.26

Spring Batch를 적용해 보기에 앞서

Spring Batch가 무엇인가? 스프링 배치는 대용량 데이터의 처리를 돕는 배치 애플리케이션이다. 왜 Spring Batch를 사용해야 하는가? 사실 스스로도 Spring Batch(배치 애플리케이션)의 역할 및 기능을 알아보기 이전까지는 스케줄러 + 배치의 조합과 특정 스케줄러를 이용해 주기적으로 특정 API를 호출하도록 하는 것과의 차이에 대해 궁금해했었다. 이는 전적으로 배치에 대한 개념적인 이해의 부족이 초래한 결과이었는데, 사실 생각해 보면 어떤 반복 작업을 처리하기 위해 단순히 만들어 놓은 비즈니스 로직을 실행하기 위한 API 호출을 하는 것과 달리 배치 애플리케이션을 이용하는 것은 분명히 필요한 서비스 로직 외에 어떤 책임을 가지고 있을 거라 예상할 수 있다. 위에서도 거론했듯이 Spri..

Spring 2023.02.19