"서비스가 죽었는데 아무도 몰랐어요. 고객이 먼저 전화로 알려줬습니다." 외주로 받은 서비스가 인계 직후 겪는 가장 허무한 사고예요. 백업도 있고 테스트도 있는데, 정작 "지금 서비스가 정상인지"를 보는 눈과 "문제가 생기면 누가 깨워주는지"가 통째로 빠진 거죠. 2026년 들어 GitHub Actions·클라우드 부분 장애가 잦아지면서, 이 모니터링·옵저버빌리티·온콜(장애 대응) 인계가 외주 분쟁의 새 1순위로 올라왔습니다. 오늘은 계약에 반드시 넣어야 할 8가지 항목을 정리해드려요.
백업은 "잃은 데이터를 되살리는" 사후 장치이고, 테스트는 "배포 전" 안전망이에요. 그런데 운영 중인 서비스가 지금 이 순간 건강한지는 둘 다 말해주지 않습니다. 옵저버빌리티는 보통 3가지로 나뉘어요 — 지표(metrics: CPU·응답시간·에러율), 로그(logs: 무슨 일이 있었나), 추적(traces: 요청이 어느 단계에서 느려졌나). 여기에 알림(alerting)과 온콜(on-call) 로테이션이 붙어야 "사람이 자다가도 깨서 고치는" 체계가 완성됩니다. 외주사가 떠나면 이 체계가 같이 사라지는 경우가 정말 많아요.
지연시간·트래픽·에러율·포화도(latency·traffic·errors·saturation) 4가지 골든 시그널을 한 화면에서 보는 대시보드를 인계받으세요. Grafana / Datadog / Vercel Analytics 중 무엇이든, 발주사 계정 소유로 넘어와야 합니다. 외주사 개인 계정에 걸려 있으면 떠나는 순간 깜깜이가 돼요.
로그가 print() 흩뿌리기가 아니라 JSON 구조화 로그(요청ID·사용자ID·레벨 포함)여야 검색이 됩니다. 보관 기간(예: 운영 30일·감사 1년)과 저장소(CloudWatch·Loki·Sentry)를 계약에 적으세요. 개인정보가 로그에 찍히지 않게 마스킹 규칙도 함께요(개인정보보호법 28조).
알림은 "에러율 5분간 2% 초과" 같은 구체 임계값 + 어느 채널(Slack·전화·PagerDuty)로 + 누구에게까지 정의돼야 합니다. 알림이 너무 많아 무시하게 되는 "알림 피로"를 막으려면, P1(즉시 전화)·P2(슬랙)·P3(아침 요약) 3단계로 나누세요.
인계 후 최소 30일은 외주사가 1차 온콜을 맡고, 그 사이 발주사 팀에 로테이션을 인계하도록 명문화하세요. "누가 언제 당번이고, 못 받으면 누구에게 에스컬레이션되는지" 표가 있어야 합니다.
자주 터지는 5개 시나리오(DB 커넥션 고갈·외부 API 장애·결제 실패 급증·배포 후 에러 폭증·디스크 풀)에 대해 "증상 → 확인 명령 → 조치 → 롤백" 런북을 문서로 받으세요. 새벽 3시에 처음 보는 에러를 디버깅하는 것과, 런북을 따라 5분 만에 복구하는 건 천지차이예요.
가용성 목표(예: 99.9%)와 응답시간 목표(p95 800ms)를 SLO로 합의하고, 이를 초과하는 장애가 며칠 안에 몇 회 이상이면 무상 대응 의무가 발생하는지 적으세요. 숫자가 없으면 "이게 장애냐 아니냐"로 매번 싸웁니다.
/health 엔드포인트만으로는 부족해요. 실제 사용자 흐름(로그인 → 핵심 기능 → 결제)을 1~5분마다 자동으로 찔러보는 합성 모니터링(synthetic check)을 걸어야, 첫 문단의 "고객이 먼저 알려주는" 사고를 막습니다.
잔금 지급 조건에 다음 6종을 묶으세요 — ⓐ 대시보드(발주사 계정) ⓑ 알림 규칙 + 채널 설정 ⓒ 온콜 로테이션 표 ⓓ 상위 5개 런북 ⓔ SLO 합의서 ⓕ 합성 모니터링 시나리오. 이게 다 있어야 "운영 가능한 상태"로 인계된 겁니다.
① 골든 시그널 대시보드가 우리 계정에 있는가 ② 로그가 구조화 + 보관 기간 명시인가 ③ 알림 임계값·채널·수신자가 정의됐는가 ④ 온콜 30일 1차 대응이 계약에 있는가 ⑤ 상위 5개 런북이 문서로 있는가 ⑥ SLO·에러버짓이 숫자로 합의됐는가 ⑦ 합성 모니터링이 핵심 흐름을 찌르는가 ⑧ 6종 자산이 잔금에 묶였는가.
포텐랩은 이 모니터링·온콜 6종 자산 묶음을 인계 잔금 표준으로 삼고 있어요. 97% 수행완수율과 모든 과정을 Notion으로 투명하게 공유하는 방식 그대로요. 운영까지 안심하고 받고 싶다면 포텐랩에 편하게 문의 주세요. 실제 사례는 포트폴리오에서 확인하실 수 있습니다.