WEBBOOK CHAPTER

웹서비스 트러블슈팅, 증거로 고치는 법: 35장. 시니어 Capstone

35장. 시니어 Capstone

example/fixtures/incidents.json의 다섯 사건을 순서 없이 뽑는다. 10분 안에 impact statement와 request path를 만들고, 20분 안에 증거 세 개와 반증 가능한 가설을 제시한다. state-changing action 전 stop/rollback을 말한다.

TLS, OAuth loop, pool exhaustion, queue duplicate, rollout 502를 각각 재현한다. 복구 후 synthetic와 business invariant를 통과하고 incident command 기록과 postmortem을 제출한다.

평가표는 정답 명령보다 위험 관리, 증거 연결, 사용자 소통, 재현성, 후배가 실행 가능한 runbook을 본다.

Capstone의 첫 산출물은 계층 표다. 각 계층의 owner, timeout, retry, request ID, dashboard, runbook, 최근 변경을 한 장에 적는다. 알 수 없는 칸은 추측하지 말고 “미확인”으로 표시하고 확인 owner를 정한다.

두 번째 산출물은 evidence packet이다. 새니타이즈된 HAR, dig/인증서 결과, trace, query/lock snapshot, pod event, deployment digest, timeline을 사건 ID로 묶는다. graph screenshot에는 query, timezone, 시작·종료, unit, 변경 marker가 있어야 한다.

세 번째는 recovery proof다. web synthetic만 통과하지 말고 결제·주문 불변식, queue oldest age, DB connection pool wait, 새 revision 오류율, 외부 callback을 확인한다. rollback으로 남은 degraded setting은 owner·제거 시각·위험을 따로 등록한다.

마지막으로 동료가 사건 fixture 하나를 바꾸어 blind drill을 실행한다. 저자가 예상한 정답과 달라도 증거와 안전성으로 복구했다면 통과다. 반대로 우연히 restart로 정상화했지만 원인·rollback·검증이 없으면 미통과다.