허참 Spring Batch란 녀석을 만났다.
우선 Batch 배치란 일괄 작업을 뜻한다.
그럼 우리가 흔히 사용하는 서비스 안에서 일괄 작업은 어떤 것들이 있는가
예를 들면 월별 회원 정산, 일별 주문량 정산 등이 있을 수 있겠다.
우리는 보통 이러한 일괄 작업들을 Spring Scheduler를 이용하여 지정된 주기별로 자동으로 작업 되도록 한다.
본인이 몸을 담고있는 서비스에서도 물론 그런 방식으로 처리되고 있었다.
하지만 이렇게 서비스 내에서 Scheduler를 이용하여 일괄 작업을 처리하면 우선적으로 메모리에 문제가 생길 수 있다.
우리가 처리하는 일괄 작업들은 대개 대용량 데이터를 다루는 경우가 많다.
이렇게 대용량 데이터를 처리하는 작업은 당연히 많은 양의 메모리를 차지하게 된다.
대용량 데이터를 처리하는 동안 많은 양의 메모리를 차지해서 서비스 내에 다른 기능들에게 영향을 줄 수 있고
또한 다른 기능들을 처리하느라 메모리가 부족해서 대용량 데이터를 처리하는데 문제가 생길 수도 있다.
그래서 우린 Spring Scheduler로 처리되던 대용량 데이터 작업들을 독립적인 서버로 분리하기로 했다.
그렇게 Spring Batch란 녀석을 만나게 되었다.
Spring Batch
우선 Spring Batch를 오해하는 사람들이 많은 거 같아서 정리하고 넘어가자
물론 본인도 헷갈렸다.
Spring Batch는 Spring Scheduler와는 다른 것이다.
Spring Batch는 Spring Scheduler로 실행되던 하나의 작업 단위이다.
예를 들어 Spring Scheduler를 이용하여 월별 회원 정산을 하는 기능이 있었다고 치자
그렇다면 여기서 Spring Batch로 구현되는 기능은 월별 회원 정산이다.
그리고 월별 회원 정산을 주기적으로 한 달에 한 번씩 실행시켜주는 게 Spring Scheduler인 것이다.
물론 주기적으로 실행시키는 Trigger의 역할은 Spring Scheduler가 아닌 다른 것도 많이 있다.
서론이 길었다.
그럼 이제 Spring Batch를 사용해 보자
다음에
'Web > Spring' 카테고리의 다른 글
맨땅에 Spring Batch - Meta Table (0) | 2024.01.16 |
---|---|
맨땅에 Spring Batch - 설정 (0) | 2024.01.16 |
Spring boot에서 mybatis mapper location 설정 (0) | 2022.10.25 |
Spring Security녀석을 만났다. (0) | 2022.07.27 |
스프링 스케쥴러란 녀석을 만났다. (0) | 2022.07.27 |