매일 아침 5시에 실행되도록 설정된 프로세스가, 오늘도 정상적으로 작동하지 않았다.
로그를 확인해 보니, 오류는 한 줄도 발생하지 않았습니다.
이건 가장 까다로운 상황인 거네요. 떨어지시는 게 오히려 더 편하지 않으세요?
저희는 매일 30명의 AI 직원들을 정해진 시간에 무인으로 운영하고 있습니다. 지난 1개월 동안 같은 “고요하게 멈추다”를 형태가 다른 것들로 3번 실행했습니다.
오늘은 그 세 가지를 순서대로 작성하겠습니다. 좁은 이야기입니다. 하지만 정기 실행을 구성해놓고 있는 사람들에게는 반드시 참석합니다.
클로드 코드의 정기 실행이 가장 조용히 고장나는 이유
먼저, 그 이유는 다음과 같습니다.
대화형으로 작동하는 경우와 무인형으로 작동하는 경우, 전제가 다르기 때문에
죄송합니다. 제공해주신 정보가 없어 번역할 내용이 없습니다. 일본어 note.com 게시글의 본문 청크 9/70를 제공해주시면, 자연스럽고 정확한 한국어 번역본을 출력해 드리겠습니다.
손안에서 두드리는 순간, 당신은 그 자리에 있겠죠. 허락을 물어보일 때만 누르고, 멈췄을 때만 알아차리는 거죠.
무인 실행에는 그것이 존재하지 않는다. 질문해도 아무도 대답하지 않고, 멈춰서도 아무도 지켜보지 않는다.
문제는 클로이드 코드 스스로가 어디에서 작동하고 있는지 알지 못한 채 똑같이 행동하는 데 있습니다. 그래서 “듣고 기다리기”가 올바른 움직임으로 실행되어 그대로 아침이 끝나는 것입니다.
오류가 아니므로 로그에도 나타나지 않습니다.
구멍 1: 경로가 다르면 승인 대기 상태에 멈춰서 전체가 막히게 됩니다.
가장 큰 피해를 입은 첫 번째 대상입니다.
저희의 정기 실행은, 시간이 되면 정해진 메커니즘이 작동하여 처리를 진행합니다. 그런데, 같은 내용이 다른 경로からも 작동하여 발동될 수 있는 상태가 되어 있었습니다.
그 다른 경로로 인해 발생한 문제로 파일 쓰기 권한을 요청하자 세션이 멈췄습니다. 아무도 없었기에 그대로였습니다.
이 정도면 하나의 작업만 실패한 것뿐입니다. 실제로는 훨씬 심각한 문제였는데, 멈춰버린 세션이 실행 자원을 계속 점유하면서 뒤에 대기 중이던 다른 정기 작업까지 모두 중단되었습니다.
1건의 침묵이 그 날의 전체 일정을 완전히 잠식한 듯했습니다. 더욱이 까다로운 점은, 뒤에서 멈춰선 측면에는 오류나 경고가 하나도 남아있지 않아서, 다음 날 로그를 확인해봐도 ‘そもそ事’처럼 켜지지 않는 것처럼밖에 보이지 않아, 원인이 바로 전 건에 있다는 것을 알아차리는 데까지 무려 1일이 걸렸습니다.
대책은 “어떤 경로로 발생했는지”를 먼저 판단하도록 하는 것입니다.
정정 방법은 생각보다 단순했습니다.
점화 시 전달되는 지시문 내에 무인 실행 시에만 포함되는 단락을 두며, 처리 시작 시 해당 단락의 유무를 확인한다.
본격적인 처리에는 참여하지 않았습니다. 읽기만 하고 “다른 경로이므로 건너듸했습니다”라는 한 줄만 남기고 종료합니다.
핵심은 판정을 지시문 자체에 내재시킨 데 있습니다. “다른 경로일 때는 주의하라”는 운영 규칙을 적용했더니, 처음에는 지켜지지 않았습니다.
穴2: 鍵はあったのに、誰も子プロセスへ渡していなかった
두 번째는 작업기를 교체했을 때의 이야기입니다.
이전 후, 이미지 생성 처리만 무인 실행 시에 멈추는 문제가 발생했습니다. 제가 직접 실행하면 정상적으로 작동하며, 무인 실행에서는 멈춥니다.
처음에는 “열쇠가 마이그레이션하면서 사라진 줄”이라고 생각했습니다. 하지만 확인해보니 열쇠는 설정 파일에 처음부터 있었습니다.
그렇다면 무엇이 사라진 걸까요.
누가 그 열쇠를 읽어 자 프로세스로 전달할 것인지, 그리고 어떤 실행 시스템에서 실행할 것인지가 두 가지였습니다.
둘 다, 그 이전까지는 사람이 대화 셸에서 직접 준비했던 것이었습니다. 사람이 존재하는 상황을 전제로 하는 준비는 무인 실행에는 이관되지 않습니다. 당연한 일이라고 할 수 있지만, 키 자체를 의심했기 때문에 우회적인 방법을 택했습니다.
수정 후 환경을 전혀 이어서 하지 않은 조건에서 테스트를 진행했습니다.
해결책은 스크립트가 스스로 키와 실행 환경을 해결하도록 수정하는 것이었습니다.
설정 파일에서 키를 읽고, 사용할 실행 시스템을 직접 지정한다. 출발 전에 두 가지 모두 준비되었는지 확인하고, 부족하면 대체 경로를 명확히 지칭하여 멈춘다.
그리고 여기가 중요한 점은, 수정 후에는 환경 변수를 전혀 이어가지 않는 조건으로 실행하여 정상 통과하는지 확인했다는 것입니다.
정상 작동 여부를 확인한 후 1주일 뒤 아침에 알아차리게 됩니다. 무인과 동일한 조건에서 테스트해야만 무인 운영 상태인지 확인할 수 있습니다.
손으로 테스트해 보니 작동한다. 오래된 실행 체계에서는 작동하지 않는다.
세 번째는 가장 어리숙한 녀석입니다.
세션을 시작할 때 실행되는 메커니즘을 하나 추가했습니다. 현재 환경에서는 문제없이 작동합니다.
다행히 무인 실행만 오류가 발생했습니다. 원인은 해당 방식이 최신 방식에 기반하여 사용되었고, 무인 측에서 사용되는 이전 실행 파일이 해당 방식을 이해하지 못했기 때문입니다.
손에는 새로운 물건이 들어와 있어서, 본인이 쓴 부분까지 결국 깨닫지 못했습니다.
대책은 두 가지 있었고, 그 중 하나만으로는 부족했습니다. 첫째는 오래된 버전에서도 통하도록 작성 방식을 수정하는 것이고, 둘째는 실행 환경을 고정하여 암묵적인 위임 없이 명확히 지정하는 것입니다.
묵시록적으로 맡기면 기계가 변하는 순간에 조용히 부서집니다.
클로드 코드의 정기 실행을 조용하고 안정적으로 중단되지 않는 형태로 만드는 3가지 방법입니다.
세 개의 구멍은 원인이 서로 다르게 보이지만, 뿌리는 동일했습니다.
사람이 있는 상황에서는 어떤 것이든 무인 쪽으로 남아 있었다.
그러므로 저희가 현재 진행 중인 일은 이 세 가지입니다.
첫째, 스스로 경로를 판단하게 합니다. 전달받은 지시문 내용에 따라 결정합니다.
두 번째로, 잠금과 실행 계도 스크립트가 스스로 해결하는 것. 현지 셸의 상태에 의존하지 않는다.
세 사람, 이것이 사실 가장 효과적인 부분이었고, 침묵과 정상적인 상태를 구별할 수 있는 공간을 만드는 것입니다.
終わったら台帳に1行残す。残っていなければ、それは「異常なし」ではなく「たぶん止まっている」と読む。うちはこれを入れてから、朝の見落としがほぼ無くなりました。
덧붙여서: 권한이 부족할 때는 확장하기 전에 의심해야 합니다.
마찬가지로, 같은 시기에 효과가 있었던 판단도 기록해두겠습니다.
매일 아침 자동 처리가 특정 폴더의 읽기 권한 제한으로 인해 약 5시간 멈추고 있었습니다.
가장 먼저 떠올랐던 것은 “승인을 내는” 것이었습니다. 하지만 실제로 가져온 것은 반대로, 그 폴더를 확인하는 대신 다른 방식으로 바꾸는 방향이었습니다.
결과적으로 5시간 걸리던 작업이 10초 만에 끝나게 되었고, 그 날의 정지 건은 2건에서 0건으로 줄었습니다. 누락된 부분 없이 완벽하게 마무리되었습니다.
무인으로 작동하는 물건에 광범위한 권한을 한데 모아주면 오작동 시 피해가 그만큼 커집니다. 따라서 권한을 더하는 방식은 항상 최후의 수단으로 고려합니다.
오늘 해야 할 한 발자국
한 가지, 오늘 할 수 있는 일.
당신의 정기 실행이 오늘 아침에 제대로 완료되었는지, 어디에서 확인하고 계신가요?
만약 답이 “오류가 발생하지 않았다는” 것이라면, 그것은 확인되지 않았습니다. 조용히 멈추는 때는 아무것도 오지 않기 때문입니다.
할 일은 처리가 끝난 후 한 줄을 추가하는 것뿐입니다. 완료된 시간과 처리한 건수를 어느 파일에 기록합니다.
내일 아침에 그 현상이 증가하는지 확인해 보세요. 증가하지 않는다면 멈춰 있을 것입니다. 그것만으로도, 알아차릴 수 있는 시간이 수일에서 1일로 줄어들 것입니다.
저희도 거기서 시작했어요.
오늘 있었던 이야기는 다음과 같습니다.
클로이드 코드를 업무에 적용할 때의 유형을 모색하고 있습니다.
클로드 코드 스튜디오에서는 Claude Code를 실무에 적용하면서 실제로 발생했던 문제점과 그 날짜에 즉시 적용했던 대책들을 그대로 공개하고 있습니다. 지침 분할 방법, 승인 게이트 활용 방법, 숫자 관리 방법까지 모두 담았습니다.
클로드코드스튜디오 6가지 혜택을 받으세요.
이 글은 Claude Code로 AI 직원(社員)을 제작하고 있는 주식회사 플레이(PLai)가 작성했습니다.
## ClaudeCode: 정기 실행, 자동화, AI 에이전트, CLI, 운영 설계, 모니터링, 생성 AI, 업무 자동화, 개발 효율화, launchd, AI 활용
출처: note 원문
번역: Gemma 3(.44) 초벌 + 교정 52청크
원문 보기 | 출처: note.com