제공된 YAML 설정은 크게 queues와 scheduler 두 가지 주요 섹션으로 구성됩니다.
큐(Queues) 설정
queues 섹션은 애플리케이션에서 처리할 백그라운드 작업의 큐들을 정의합니다.
-
within_1_minute: 1분 이내 처리를 목표로 하는 작업 큐입니다. -
within_1_hour: 1시간 이내 처리를 목표로 하는 작업 큐입니다. -
within_1_day: 1일 이내 처리를 목표로 하는 작업 큐입니다. 각 큐는1이라는 동일한 가중치를 부여받아, 특정 큐에 대한 우선순위 없이 균등하게 작업이 분배될 수 있음을 나타냅니다. 이는 작업의 중요도에 따라 큐를 분리하고, 각 큐의 처리 빈도를 조절할 수 있는 유연성을 제공합니다.
스케줄러(Scheduler) 설정
scheduler 섹션은 백그라운드 작업을 예약하고 실행하는 스케줄러의 동작 방식을 제어합니다.
-
dynamic: true: 스케줄러가 동적으로 동작함을 나타냅니다. 이는 런타임에 스케줄링 규칙을 추가하거나 변경할 수 있는 유연성을 제공할 수 있습니다. -
rufus_scheduler_options:rufus-schedulerGem의 특정 옵션을 설정하는 부분입니다.max_work_threads: 스케줄러가 동시에 실행할 수 있는 최대 작업 스레드 수를 정의합니다. 이 값은ENV.fetch "HANAMI_MAX_THREADS", 5와 같이 환경 변수HANAMI_MAX_THREADS에서 가져오도록 설정되어 있습니다. 환경 변수가 설정되지 않은 경우 기본값으로5개의 스레드를 사용합니다. 이는 애플리케이션의 배포 환경에 따라 스케줄러의 동시성 수준을 유연하게 조절할 수 있도록 설계된 것입니다.
이러한 설정은 애플리케이션이 다양한 시간 제약 조건을 가진 작업을 효율적으로 처리하고, 시스템 자원을 최적으로 활용할 수 있도록 지원합니다. 특히, 환경 변수를 통한 스레드 수 제어는 운영 환경의 부하에 따라 스케일링을 용이하게 합니다.