| name | deploy-verification-loop |
| description | 배포 직후 일정 간격(예 15분)마다 health·smoke 엔드포인트를 curl로 찔러보고, 실패하면 배포 로그·환경변수·마이그레이션을 점검해 가장 작은 수정을 적용한 뒤, 설정한 모든 엔드포인트가 성공 응답을 줄 때까지 반복하는 인터벌 루프입니다. 사용자가 "배포 후 헬스체크 돌려줘", "배포 검증 루프", "deploy 끝나고 health/smoke 엔드포인트 다 통과할 때까지 15분마다 체크", "배포하고 나서 헬스 엔드포인트 주기적으로 찔러줘", "배포 잘 떴는지 확인 루프", "deploy verification loop", "hit health and smoke endpoints after a deploy", "verify deploy until healthy", "post-deploy health check loop"처럼 배포가 정상인지 주기적으로 검증하고 싶을 때 사용하세요. (구분: 배포 후 한 번 수동으로 고정 스모크 체크리스트를 도는 건 looping:staging-smoke-test, 원격 CI 실행을 주기적으로 감시하는 건 looping:ci-failure-watcher, DB 마이그레이션을 깨끗이 적용시키는 건 looping:migration-until-applied, 열린 PR을 주기적으로 돌보는 건 looping:pr-babysitter) |
배포 검증 루프 (Deploy Verification Loop)
일정 간격마다 배포 후 health·smoke 엔드포인트를 찔러보고, 모든 체크가 정상 응답을 줄 때까지 반복합니다.
| 항목 | 값 |
|---|
| 카테고리 | DevOps |
| 트리거 | 인터벌(interval) — 기본 15분마다 |
| 종료 조건(Exit) | 설정한 모든 health 엔드포인트가 성공 응답을 반환할 때 |
| 반복 한도(Max iterations) | 8 |
| 매 반복 체크 명령 | curl -fsS <your-health-url> |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Claude Code · Cursor · Codex |
이 루프는 언제 쓰나
배포 버튼을 누른 직후 "진짜 잘 떴나?"를 사람이 새로고침하며 들여다보는 대신, 정해진 간격마다 에이전트가 health·smoke 엔드포인트를 대신 찔러보고 정상으로 수렴할 때까지 지켜보게 할 때 씁니다. 배포 직후에는 인스턴스 워밍업, 마이그레이션 지연, 환경변수 누락, 롤아웃 시차 때문에 잠깐 빨갛다가 자연히 초록으로 바뀌는 일이 흔합니다. 이 루프는 그 시차를 견디며 찔러보기 → 실패 조사 → 재검증을 주기적으로 반복하고, 진짜 문제(설정 누락·마이그레이션 실패 등)면 가장 작은 수정을 적용하거나 명확한 블로커로 에스컬레이션합니다. 상태 코드와 응답 본문을 매 회차 기록하므로, 어느 엔드포인트가 언제부터 정상이 됐는지 흐름이 그대로 남습니다.
루프 흐름
〔15분마다〕→ health/smoke 엔드포인트 찔러보기 → 실패 조사 → 재검증 →〔피드백 게이트〕
설정한 엔드포인트가 전부 성공? → 아니오: 다음 틱에 반복(최대 8회) / 예: 종료
매 반복(pass)마다 하는 일
- health 엔드포인트 찔러보기 — 설정해 둔 health/smoke URL을 curl로 호출합니다. 상태 코드와 응답 본문을 기록합니다.
curl -fsS https://your-app.example/health
- 실패 조사 — 엔드포인트가 하나라도 실패하면 최근 배포 로그, 환경변수(env vars), 마이그레이션을 확인합니다. 가장 작은 수정을 적용합니다.
- 재검증 — 수정 또는 롤백 결정 후 health 체크를 다시 돌립니다.
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
이 루프는 시간 기반(인터벌) 입니다. Claude Code에서 인터벌 루프를 돌리는 방법은 두 가지입니다.
방법 1 — /loop (이번 세션 동안 주기 실행)
/loop 15m "배포 검증 루프(Deploy Verification Loop)"를 시작합니다.
목표: 배포 후 모든 health·smoke 엔드포인트가 성공 응답을 반환한다.
최대 반복: 8.
매 반복 사이 실행: curl -fsS <your-health-url>
종료 조건: 설정한 모든 엔드포인트가 성공할 때.
1단계: health/smoke URL을 찔러본다. 실패가 있으면 배포 로그를 살펴 고치거나 에스컬레이션한다.
방법 2 — /schedule (세션을 닫아도 도는 cron형 클라우드 에이전트)
세션을 꺼도 계속 검증하게 하려면 /schedule로 위 프롬프트를 cron(예: */15 * * * *)에 등록하세요. 배포 파이프라인이 끝난 뒤 한동안 무인 감시를 돌려야 할 때 적합합니다.
전제: <your-health-url>을 실제 health/smoke 엔드포인트로 바꾸고, 인증이 필요한 엔드포인트면 curl에 헤더(-H "Authorization: ...")나 토큰을 함께 넘기세요.
팁 / 변형
- 여러 엔드포인트: health 외에 smoke·readiness까지 보려면 체크를 묶으세요. 예:
curl -fsS $URL/health && curl -fsS $URL/ready.
- 체크 명령 교체: 순수 curl 대신
httpie(http --check-status GET $URL/health)나 프로젝트 스크립트(npm run smoke)로 바꿔도 됩니다. -fsS는 실패 시 0이 아닌 종료 코드를 주므로 종료 조건 판단에 유용합니다.
- 간격 조정: 롤아웃이 느리면
/loop 30m처럼 늘리고, 빠른 배포 검증이면 5m으로 좁히세요.
- 막힐 때: 같은 엔드포인트가 2회 연속 실패하면 가드레일대로 지표를 조작하지 말고, 롤백 여부 판단과 함께 사람에게 에스컬레이션하게 하세요.
- 연관 루프: 배포 후 한 번 도는 고정 스모크 체크리스트는
looping:staging-smoke-test, 원격 CI 감시는 looping:ci-failure-watcher, DB 마이그레이션 적용은 looping:migration-until-applied.
원본 영어 kickoff (loops.elorm.xyz 원문)
/loop 15m Start the "Deploy Verification Loop".
Goal: all post-deploy health and smoke endpoints return success.
Max iterations: 8.
Between iterations run: curl -fsS <your-health-url>
Exit when: every configured endpoint succeeds.
Step 1: Hit health/smoke URLs. If any fail, inspect deploy logs and fix or escalate.
출처: https://loops.elorm.xyz/loops/deploy-verification-loop