Java

@Schedule 통해서 스케줄러 돌 때 데이터가 많아질 때 상황의 생각

개발만파볼까 2024. 3. 27. 01:19
728x90
반응형
SMALL

상황

현재 어떤 서비스는 여러 파드 기반에 하나의 파드 내에서 @Schedule 어노테이션을 통해서 하나의 스케줄러가 동작을 하고 있는 상황이다. 일정한 양의 데이터를 처리한다면 이슈가 없겠지만, 갑자기 데이터가 많아진다면 현재의 스케줄러가 부하가 있을 수 있는 상황이다. 어떻게 대처를 할 것인지?

 

 

해결방안 생각

  1. 각 파드마다 스케줄러를 돌리게 하는 동시에 데이터들을 각 파드에 나눠서 처리하게 하는 방식
    • 환경변수를 이용해서 조건절을 사용하는 방식으로 분할해서 처리하는 방식을 생각할 수 있을거 같음
  2. 스케일 업 하는 방식
  3. 큐를 사용하는 방식
    • RabbitMq나 Kafka를 써서 순서대로 데이터 오는데로 Bulk 단위로 처리하는 방식
    • 한 파드 내에서 스케줄러 처리에 대해서 한계가 있으므로 큐에 모이는 속도를 딜레이를 줘야 할 듯

 

분석

  1. 내가 생각하기에는 3개 방식 중에서 가장 간편한 방법이면서도 효과적일 거 같음
  2. 단순히 스케일 업 하는 방식은 한계가 있는 것도 있고 단순히 사양을 늘린다 해서 효과도 없을 거 같음
  3. 큐 세팅이 보다 복잡할 거 같고, 1번에 비해서 어떤 장점이 있는지를 잘 모르겠음

 

 

우려하는 점

  1. 환경변수로 조건절을 분기처리를 한다고 하면 중복되는 영역이 없어야 함. 만약 있다면 중복처리 되는 이슈가 생길 수 있음
  2.  X 
  3. 세팅은 복잡하지만 1번 처럼 중복에 대한 이슈는 없을 거 같음.
728x90
반응형
LIST