낯선 시스템 앞에서 · 가설과 검증 · 실습
증상을 숫자로 고정하기
목표
"가끔 안 돼요" 라는 신고를 20분 안에 측정값과 반증 가능한 가설로 바꿀 수 있게 됩니다.
왜 중요한가
고객은 버그 리포트를 주지 않습니다. 고통 리포트를 줍니다. 그것을 측정 가능한 문제로 바꾸는 것은 전적으로 이쪽의 일이고, 그 첫 도구가 재현 명령입니다. 실패율을 숫자로 고정하는 순간 두 가지가 생깁니다. 첫째, 고객과 같은 사실을 보게 됩니다. 둘째, 나중에 "고쳤다" 고 말할 잣대가 생깁니다. 잣대 없이 고친 것은 고쳤는지 알 수 없습니다.
그다음이 가설인데, 여기에 규칙이 하나 있습니다. 틀렸을 때 무엇이 보일지가 정해져 있지 않으면 가설이 아닙니다. "네트워크 문제 같다" 는 무슨 결과가 나와도 살아남기 때문에 후보를 줄여 주지 못합니다. 죽을 수 있는 문장만이 조사 범위를 좁힙니다. 그리고 배제한 것을 적어 두지 않으면, 30분 뒤에 자기가 이미 지운 후보를 다시 확인하고 있게 됩니다.
단계
1. /root/hypothesis 디렉터리를 만드세요.
2. /opt/app/flaky.py 를 실행해 127.0.0.1:8001 에서 응답하게 만드세요.
3. /quote 를 연속 20회 호출해 200 이 아닌 응답의 개수를 /root/hypothesis/baseline.txt 에 적으세요.
4. 그 실패율을 퍼센트 정수로 /root/hypothesis/rate.txt 에 적으세요. 기호 없이 숫자만.
5. 실패한 응답의 본문 문자열을 /root/hypothesis/reason.txt 에 저장하세요.
6. /root/hypothesis/h1.md 에 가설:, 맞다면:, 틀리면: 세 줄이 들어간 가설을 쓰세요.
7. /root/hypothesis/ruled_out.txt 에 배제한 계층을 적으세요. 각 줄은 network, auth, app, data 중 하나로 시작하고 근거를 덧붙입니다. 최소 두 줄.
8. /quote 를 연속 40회 호출해 실패 횟수를 /root/hypothesis/confirm.txt 에 적으세요.
참고
python3 /opt/app/flaky.py &로 띄우고curl -s http://127.0.0.1:8001/health로 확인합니다.for i in $(seq 1 20); do curl -s -o /dev/null -w '%{http_code}\n' URL; done | sort | uniq -c- 흔한 실수 1: 20회를 나눠서 호출하고 사이에 다른 요청을 섞는 것. 연속 20회여야 합니다.
- 흔한 실수 2: 5번에서 상태 코드만 저장하는 것. 필요한 것은 응답 본문입니다.
단계 8개
- 가설 작업 디렉터리 만들기
- 견적 API 띄우기
- 20회 호출해 실패 횟수 세기
- 실패율을 퍼센트로 적기
- 실패 응답의 본문 확보하기
- 반증 가능한 가설 쓰기
- 배제한 계층 기록하기
- 같은 잣대로 재측정하기