강의 노트 · 2027.01.29

조용히 죽는 기계를 먼저 아는 법

44·45장의 시나리오 일곱 개가 멈추거나 잘못 보내는 열 가지 이유를 알고, 헬스체크·에러 핸들러·재시도·중복 방지 키·일일 보고로 먼저 알게 만들고, 장애 런북(증상 → 원인 → 조치 → 재발 방지)을 쓰고, 일부러 깨뜨린 시나리오를 고치는 10·11부의 마지막 날.

들어가며 — 자동화의 실패는 소리가 나지 않는다

사람이 하는 일은 실패하면 안다 — 안 올렸으면 안 올린 것을 기억한다. 기계는 조용히 실패한다. 토큰이 만료돼 3주 동안 릴스가 안 올라갔는데 아무도 몰랐다, 세그먼트 조건이 잘못돼 같은 사람에게 D+7 메일이 매일 갔다, 한도가 차서 금요일 발행만 빠졌다. 자동화를 "만드는 것"보다 **"죽은 것을 아는 것"**이 운영이다.

오늘은 세 가지다. (1) 죽는 이유 열 가지를 미리 안다. (2) 죽으면 기계가 먼저 말하게 만든다 — 헬스체크 · 에러 핸들러 · 일일 보고. (3) 죽었을 때 5분 안에 고치는 런북을 쓴다. 그리고 과정(44~46)을 포트폴리오로 닫는다.

1. 조용히 죽는 열 가지 이유

#원인증상 (사람이 보는 것)감지 (기계가 보는 것)조치
1토큰 · 인증 만료 (Instagram 60일 · OAuth 갱신 실패)발행이 안 됨 · 에러 401헬스체크: 매일 API 호출 1회 → 실패 알림 · 만료 7일 전 알림토큰 재발급 → 속성 교체 (코드 수정 없음)
2한도 초과 (Make ops · API 25/일 · Buffer 10건)월말에 멈춤 · 금요일만 빠짐ops 사용량 80% 알림 · 429 에러상한 설계(44장) · 플랜 조정 · 큐 지연
3형식 변경 (AI가 JSON 대신 산문 · 시트 열 이름 바뀜)파싱 에러 · 빈 캡션 발행JSON 검증 모듈 · 필수 필드 비면 중단프롬프트 [형식] 강화 · 열 이름 고정 · 검수에서 걸림
4중복 발송 (트리거 두 번 · 재시도가 두 번 보냄)같은 메일 둘 · 같은 릴스 둘중복 방지 키(id + 단계) 시트에 기록 → 있으면 건너뜀키 적용 · 재시도는 '보내기 전'까지만
5시간대 (UTC · KST · 서머타임)21시 넘어 문자 발송 · 예약이 9시간 밀림시나리오 시간대 KST 명시 · 발송 전 시간 필터모든 모듈 KST · 필터 이중
6외부 변경 (API 버전 · 사이트 구조 · 템플릿 반려)어제까지 되던 것이 안 됨에러 메시지에 'deprecated' · 템플릿 상태 변경 알림변경 로그 구독 · 월 1회 점검
7데이터 품질 (주문 행에 날짜 없음 · 이메일 오타)세그먼트 0명 · 반송률 급등입력 검증(필수 열 · 형식) · 반송률 5% 알림40장 정제 규칙을 트리거 직후에
8조건 오류 (D+7이 '매일 7일 이후 전부')한 사람에게 매일 발송중복 키 + 수신자당 단계별 1회 규칙조건을 '정확히 7일'로 · 테스트 데이터로 3일 돌려 보기
9침묵 실패 (에러가 아닌데 결과가 비었다)0건 발행 · 0건 수집, 에러 없음기대값 검사 — 금요일엔 발행 ≥ 1, 월요일 리포트엔 행 ≥ 7기대값을 헬스체크에
10사람 부재 (✅ 누를 사람이 휴가)검수 대기에 7일째대기 48시간 초과 알림 → 백업 승인자백업 승인자 · 대기 상한

9번이 가장 위험하다. 에러 핸들러는 에러만 잡는다. "아무 일도 안 일어남"은 에러가 아니다. 그래서 헬스체크는 "돌아갔나"가 아니라 **"기대한 결과가 있나"**를 본다.

미니 실습 — 우리 시나리오에 대입 (25분)

시나리오 7개(A~D 숏폼 · 이메일 · 알림톡 · 캘린더) × 열 가지 → 걸리는 칸에 O. 각 시나리오의 기대값(요일 · 건수) 한 줄.

평가 기준: 시나리오마다 기대값이 있는가. 9 · 10번을 빠뜨리지 않았는가.

수강생이라면

이 주제의 전문 교안 · 슬라이드 · 실습은 강의실에서 이어집니다.

조용히 죽는 기계를 먼저 아는 법 · METAL MEDIA