피드로 돌아가기
당신은 systemd 타이머를 충분히 좋아하지 않는군요
GeekNewsGeekNews
Infrastructure

당신은 systemd 타이머를 충분히 좋아하지 않는군요

cron의 가시성 한계를 극복한 systemd Timer 기반 정밀 스케줄링 설계

neo2026년 6월 2일14intermediate

Context

전통적인 cron 기반 스케줄링의 모호한 $PATH 설정과 stdout/stderr 유실로 인한 디버깅 어려움 발생. 불투명한 실행 이력 관리와 직관적이지 않은 문법으로 인한 운영 효율성 저하가 주요 병목 지점임.

Technical Solution

  • .timer와 .service 유닛의 분리를 통한 실행 스케줄과 작업 로직의 관심사 분리 설계
  • ExecCondition 옵션을 활용하여 서비스 내부 로직 진입 전 유닛 수준에서 조건부 실행을 결정하는 필터링 구조 채택
  • RandomizedOffsetSec 및 FixedRandomDelay 설정을 통한 실행 시점 분산으로 Thundering Herd 문제 예방 및 트래픽 피크 완화
  • WakeSystem 옵션을 통한 절전 상태의 시스템 강제 깨움 및 필수 스크립트 실행 보장
  • Persistent 옵션 적용으로 시스템 다운타임 기간 중 누락된 작업의 온라인 직후 즉시 실행 및 상태 수렴 달성
  • systemd-analyze calendar 및 systemctl list-timers를 통한 실행 시점의 정량적 검증 체계 구축

- cron의 불투명한 로그 대신 systemd Journald 통합 로그 확인 필요 - 대규모 클러스터 내 동시 실행 방지를 위해 RandomizedOffsetSec 설정 검토 - 시스템 재부팅 후 누락된 배치 작업의 무결성 보장을 위해 Persistent=true 설정 적용 - 조건부 실행 로직을 스크립트 내부가 아닌 ExecCondition 유닛 옵션으로 이관하여 가시성 확보

원문 읽기