@Quartz vs @Scheduled

0

Spring

목록 보기
23/23

  • 첫번째 케이스의 경우에는 @Quartz 를 사용하게 되고 기본 코드가 복잡하다.
    하지만 기본적으로 제공해주는 기능이 많다.
    (오토스케일링에 대해서 클러스터링 처리를 해주기 때문에

  • 두번째 케이스의 경우에는 @Scheduled 를 사용하게 되고, 기본 코드가 간단하다.
    하지만 기본적으로 제공해주는 기능이 적다.
    따라서 scale-out 상황을 고려할 경우에는 중복실행 방지를 위해서 ShedLock 이라는 오픈소스를 이용해서 해결할 수 있다.
    다만, 테이블을 만들어서 관리해야한다는 단점이 있다.

  • 일단 내 경우에는 최대한 테이블을 만들어서 관리하지 않는게 좋을 것 같고, 중복 실행 방지도 다른 오픈소스를 쓰지 않고 기본적으로 제공해주는 @Quartz 가 나을 것 같다고 생각했다. @Quartz는 DB에 대한 동시성 문제를 해결해주는 어노테이션도 존재하는 것으로 보아 코드를 짜는데 시간이 좀 더 걸릴지라도 사용하는게 나을 것 같다고 판단했다.

-> 근데 알고보니 quartz도 클러스터링을 적용하려면 테이블을 만들어야 한다.
(https://aljjabaegi.tistory.com/679)
-> 동기화 문제 같은 경우에는 scale out 할 경우 다른 테이블에서도 모두 고려해야 하는 점이므로 나중에 한번에 처리해도 되지 않을지?

출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글