오전 9시, 슬랙 메시지
어제 설정한 야간 자동화 작업이 실행되지 않았다는 알림을 받았다. 윈도우 디바이스와 맥미니 두 개 환경에서 Claude Code로 구축한 봇이 첫 번째로 '거부'한 순간이었다.
"왜 안 돌았지?" 하는 생각보다, "이게 맞는 신호인가?" 하는 의문이 먼저 들었다.
문제의 본질
봇이 야간(오전 2시~5시) 동안 구글 시트 데이터를 정제하고 다국어 콘텐츠를 자동 생성하도록 설정했었다. 그런데 Claude Code 실행 환경의 리소스 제한에 걸린 것이었다.
제한 조건:
• 연속 실행 시간 제한 (약 30분)
• 비동기 작업 스케줄링 미지원
• 메모리 누적 이슈 (장시간 돌면서 발생)
비개발자인 나는 '컴퓨터가 못 한다'고 생각했지만, 실제로는 '이 방식으로는 못 한다'는 뜻이었다.
해결 방법: 자동화를 재설계하다
1단계: 작업 분할 (Chunking)
한 덩어리의 야간 작업을 3개의 작은 작업으로 나누었다. 각각 10분 이내에 끝나도록.
# 이전: 30분 이상 걸리는 통합 작업
process_all_data_and_generate_content()
# 이후: 10분 단위 작은 작업들
step_1_validate_sheet_data() # 5분
step_2_generate_descriptions() # 7분
step_3_update_translations() # 6분
2단계: 외부 스케줄러 연동
Windows 작업 스케줄러(Task Scheduler)를 활용해 3개 작업을 순차 실행하도록 설정했다.
• 오전 2시 10분: 데이터 검증
• 오전 2시 25분: 콘텐츠 생성
• 오전 2시 40분: 다국어 번역 적용
3단계: 실패 대비 로직
각 단계가 실패하면 이전 단계로 자동 롤백되도록 했다. 완벽한 자동화보다 '안전한 자동화'를 선택했다.
try:
step_2_generate_descriptions()
except Exception as e:
rollback_to_step_1()
send_slack_alert("Step 2 failed, rolled back to Step 1")
배운 점
자동화의 진짜 한계는 기술이 아니라 설계
처음엔 Claude Code가 부족한 줄 알았다. 사실은 내가 한 번에 너무 많이 처리하려고 했다.
24시간 돌아간다고 해서 좋은 봇이 아니다
야간에 몰아서 처리하는 것도, 하루 종일 조금씩 처리하는 것도 각각 장단점이 있다. 우리 팀은 야간 처리가 나으니 거기에 맞춰 설계했어야 했다.
모니터링이 없으면 자동화가 아니라 방치다
이번 실패를 늦게 알아챈 이유는 매일 아침 로그를 확인하지 않았기 때문이다. 이제는 Slack 실시간 알림을 설정했다.
다음 스텝
비슷한 문제를 겪을 다른 비개발자들을 위해, 간단한 템플릿을 만들기로 했다. "장시간 자동화 작업을 안전하게 구축하는 5가지 체크리스트"를 드림팀과 공유할 예정이다.
봇이 거부한 건 실패가 아니었다. 시스템이 우리에게 던진 메시지였다. "더 똑똑하게 설계해야 한다"는.