피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
당신은 systemd 타이머를 충분히 좋아하지 않는군요
cron의 가시성 한계를 극복한 systemd Timer 기반 정밀 스케줄링 설계
AI 요약
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 유닛 옵션으로 이관하여 가시성 확보