TIL

Scheduler vs Spring batch vs DB Procedure

하얀잔디 2022. 11. 8. 16:56

쪼금 다른개념이다.

 

특정한 "시간" 에 내가 원하는 일을 "자동" 으로 "시키"는 게 스케쥴러의 역할이다.

 

배치는 '일괄처리'

 

스프링에서 배치 작업 단위를 Job이라고 부른다.

 

매일 전 날의 데이터를 집계한다고 가정해보자.

 

이 집계과정을 어디서 수행할까?

 

만약 이걸 Tomcat + Spring을 통해 집계를 하면 너무 오래걸린다.

 

이런 걸 처리하는 어플리케이션을 배치 어플리케이션이라고 한다.

 

배치는 다음 조건을 만족해야 하는데,

 

1. 대용량 데이터

2. 자동화

3. 견고성

4. 신뢰성

5. 성능

 

 

 

배치를 주기적으로 동작하게 해주는 Scheduler는 대표적으로 2개가 존재한다.

 

1. Quartz 스케줄러

2. 스프링 스케줄러

 

아니면 직접 DB 프로시저로 구현할 수가 있는데, 자바를 기반으로 하는 개발자들이 다루기에 쉽지 않고, DB 담당자 외에는 손대기 힘들어 지기에, 점점 DB 프로시저에서 스프링 배치로 넘어간다고 한다.

 

 

프로시저 vs 스프링 배치

 

스프링배치를 적용하게 되면 가장 큰 장점은 아래와 같습니다.

 

1. 버전관리, 배포를 웹어플리케이션과 같은 방식으로 할 수 있습니다. (프로시저보다 관리가 편리함)

2. 부분적으로 테스트하기에 편리함. (유닛 테스트)

3. 꼭 DB서버가 하지 않아도 되는 작업은 다른 서버로 분리해서 DB서버의 자원을 조금이나마 절약하는 의미도 있습니다.  DB서버는 분할해서 구성하는 비용이 크므로 대용량시대에는 가장 아껴야할 자원인데, 어플리케이션서버는 상대적으로 여러대로 늘이는 구성이 어렵지 않습니다. 스프링배치에서도 여러서버를 써서 분산처리하는 구성도 가능합니다.

4. 스프링배치를 쓴다면 배치 모듈을 세분화해서 추후에 기능을 추가하거나 에러를 재현하기 쉬운 구조로 유도합니다.

 

프로시저의 장점

1. xml파일을 한 꺼번에 메모리에 안 올리고 부분처리

2. Job전체을 한번의 transaction으로 가지고 가지 않고 commit 주기별로 끊어서 처리

3. 코드에 침범적이지 않은 시작,실패 이벤트처리

 

그렇다면 프로시저가 속도가 더 빠른거 아닌가요?

- Java로 만든 배치가 DB 프로시저의 성능은 뛰어 넘을 수 없습니다.

  Java로 만든 배치로 만든 배치는 WAS에서 호출되다 보니 네트워크 호출비용, JDBC 드라이버의 콜스택을 거치게 됩니다.

 

 

스프링 스케쥴러 설정 방법 링크

https://smujihoon.tistory.com/136

 

Spring job Scheduler task (잡 스케쥴러, 태스크)

이 포스팅을 보러왔다면 잡 스케쥴러에 대한 기본 지식은 있고 설정하는 방법을 찾으러 왔다는 가정하에 간단하게 셋팅 내용만 포스팅할 예정이다. 1.servlet-context.xml 에서 task 추가하기간단하게

smujihoon.tistory.com

 

 

참고 : https://smujihoon.tistory.com/136

'TIL' 카테고리의 다른 글

Objects.requireNonNull 사용 이유  (0) 2022.11.16
디자인 패턴이란  (0) 2022.11.15
instanceof  (0) 2022.11.08
Annotation이란?  (0) 2022.11.08
자바 Static 왜 쓰는지.  (0) 2022.11.03