Hanami 애플리케이션의 백그라운드 작업 큐 및 스케줄러 설정

Hanami with Sidekiq

작성자
발행일
2025년 12월 01일

핵심 요약

  • 1 백그라운드 작업 처리를 위해 'within_1_minute', 'within_1_hour', 'within_1_day' 큐가 동일한 가중치로 구성됩니다.
  • 2 스케줄러는 'dynamic: true'로 설정되어 유연한 동작을 지원하며, 런타임에 스케줄링 규칙 변경이 가능합니다.
  • 3 'rufus_scheduler_options'의 'max_work_threads'는 환경 변수 'HANAMI_MAX_THREADS'를 참조하며, 기본값은 5로 설정되어 동시성 수준을 유연하게 제어합니다.

도입

이 문서는 Hanami 애플리케이션 내에서 백그라운드 작업을 처리하기 위한 큐 및 스케줄러 설정의 YAML 구성을 분석합니다. 특히, 작업의 우선순위를 관리하는 큐 정의와 스케줄러의 동작 방식을 제어하는 옵션들을 중점적으로 다룹니다. 이 설정은 시스템의 효율적인 자원 활용과 안정적인 작업 처리를 보장하는 데 필수적인 요소입니다.

제공된 YAML 설정은 크게 queuesscheduler 두 가지 주요 섹션으로 구성됩니다.

큐(Queues) 설정

queues 섹션은 애플리케이션에서 처리할 백그라운드 작업의 큐들을 정의합니다.

  • within_1_minute: 1분 이내 처리를 목표로 하는 작업 큐입니다.

  • within_1_hour: 1시간 이내 처리를 목표로 하는 작업 큐입니다.

  • within_1_day: 1일 이내 처리를 목표로 하는 작업 큐입니다. 각 큐는 1이라는 동일한 가중치를 부여받아, 특정 큐에 대한 우선순위 없이 균등하게 작업이 분배될 수 있음을 나타냅니다. 이는 작업의 중요도에 따라 큐를 분리하고, 각 큐의 처리 빈도를 조절할 수 있는 유연성을 제공합니다.

스케줄러(Scheduler) 설정

scheduler 섹션은 백그라운드 작업을 예약하고 실행하는 스케줄러의 동작 방식을 제어합니다.

  • dynamic: true: 스케줄러가 동적으로 동작함을 나타냅니다. 이는 런타임에 스케줄링 규칙을 추가하거나 변경할 수 있는 유연성을 제공할 수 있습니다.

  • rufus_scheduler_options: rufus-scheduler Gem의 특정 옵션을 설정하는 부분입니다.

    • max_work_threads: 스케줄러가 동시에 실행할 수 있는 최대 작업 스레드 수를 정의합니다. 이 값은 ENV.fetch "HANAMI_MAX_THREADS", 5와 같이 환경 변수 HANAMI_MAX_THREADS에서 가져오도록 설정되어 있습니다. 환경 변수가 설정되지 않은 경우 기본값으로 5개의 스레드를 사용합니다. 이는 애플리케이션의 배포 환경에 따라 스케줄러의 동시성 수준을 유연하게 조절할 수 있도록 설계된 것입니다.

이러한 설정은 애플리케이션이 다양한 시간 제약 조건을 가진 작업을 효율적으로 처리하고, 시스템 자원을 최적으로 활용할 수 있도록 지원합니다. 특히, 환경 변수를 통한 스레드 수 제어는 운영 환경의 부하에 따라 스케일링을 용이하게 합니다.

결론

제시된 YAML 설정은 Hanami 애플리케이션의 백그라운드 작업 처리를 위한 큐 및 스케줄러 구성의 모범 사례를 보여줍니다. 큐를 통한 작업 분류와 가중치 부여, 그리고 `rufus-scheduler`를 활용한 동적 스케줄링 및 환경 변수를 통한 스레드 수 제어는 시스템의 확장성과 안정성을 동시에 확보합니다. 이러한 구조는 복잡한 백그라운드 작업을 효율적으로 관리하고, 애플리케이션의 전반적인 성능을 향상시키는 데 기여할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!