피드로 돌아가기
Dev.toDevOps
원문 읽기
Exit Code 0의 함정을 극복한 무중단 Cron 설계로 8일의 Silent Failure 제거
GitHub Actions Crons That Actually Stay Green
AI 요약
Context
GitHub Actions의 Green Checkmark가 실제 작업 성공이 아닌 프로세스의 정상 종료(Exit 0)만을 의미하는 설계상 맹점 존재. 이로 인해 API Rate Limit 및 Token 만료 상황에서도 Job이 성공으로 표시되어 최대 6일간 작업 누락이 발생하는 Silent Failure 문제 발생.
Technical Solution
- Pre-flight Health Check 도입을 통한 작업 전 의존성(API, Token, Queue Depth) 검증 및 실패 시 즉시 Non-zero Exit 유도
- 작업 후 검증 방식에서 전방 배치 검증 구조로 전환하여 부분 실행으로 인한 데이터 오염 및 상태 불일치 방지
- Queue-low Alarm 설정을 통한 임계치(5 items) 기반 사전 경고 체계 구축 및 이메일 대신 GitHub Issue를 통한 가시성 확보
- Dead-letter Queue 패턴 및 Daily Retry 로직 구현으로 일시적 장애(Transient Error)와 실제 버그를 분리하여 노이즈 제거
- Catch-all Exception 처리 금지 및 단계별 Target Error Handling 적용을 통한 장애 지점의 명확한 가시화
실천 포인트
- GitHub Actions의 성공 표시를 맹신하지 말고 실제 비즈니스 로직의 처리 결과(Processed Count)를 검증하는가? - API 호출 전 Token 유효성 및 엔드포인트 상태를 확인하는 Pre-flight Step이 포함되어 있는가? - 큐 기반 시스템에서 'Empty'가 아닌 'Low-water mark' 기준의 사전 알림 체계를 갖추었는가? - 모든 Exception을 삼키는 try-except 구조를 제거하고 장애 발생 시 Crash-loud하게 설계했는가?