CNPE — 클라우드 네이티브 플랫폼 엔지니어 (전문가) · 지표는 정상인데 사용자는 실패하는 날 · 실습
지표가 거짓말하는 발급 API 고치기
목표
SLI의 분모를 선언하고, 실패가 빠지는 계측 코드를 고치고, 실제 HTTP 응답과 지표를 대조합니다. 중복 수집과 재시도를 구별한 뒤 독립적인 세 관측 창의 오류 예산으로 일반 기능 배포를 판단합니다.
왜 중요한가
성공 경로만 세는 계측은 실패가 늘수록 더 좋은 성공률을 보여 줄 수 있습니다. 올바른 PromQL도 잘못 모은 원자료를 고쳐 주지 못합니다. 이 실습은 알림 규칙을 쓰기 전, 무엇을 한 건으로 세는지와 빠진 증거가 없는지를 검사합니다. 함수 이름을 맞추는 것만으로 통과하지 않고 다양한 입력·실제 HTTP 실행·직접 설계한 반례를 확인합니다.
이 실습은 파드 안의 Python 서버를 실제로 실행합니다. 쿠버네티스 API나 KWOK의 Running 상태를 실행 증거로 쓰지 않습니다. 외부 시스템, 실제 GPU, 운영 Prometheus 수집, 실제 배포는 다루지 않습니다. 지연은 서버 처리 시간이며 클라이언트의 네트워크 왕복 시간과 다릅니다. 30일 창의 숫자는 학습용 가상 데이터입니다.
작업 경로는 /root/cnpe-sli입니다. Python은 표준 라이브러리만 사용합니다. 세션이 끝나면 파일과 진단 기록은 사라지므로 필요한 산출물을 따로 보관하세요. 도우미는 /opt/fixtures/cnpe_sli_workbench.py이며, 매 채점은 파일을 읽고 임시 프로세스를 종료합니다.
단계
1. scope.json에 단위·분모·목표를 선언합니다.
2. classifier.py의 classify로 상태 코드와 경로를 분류합니다.
3. 같은 함수에 느린 성공 응답의 분류를 완성합니다.
4. 실제 HTTP를 재연하고 http-receipt.json을 저장합니다.
5. summarize.py로 수집 중복을 제거하되 실제 재시도는 따로 셉니다.
6. budget.py로 관측 공백·분수 예산·고갈 경계를 처리합니다.
7. report.py와 report.json으로 세 창의 가용성·지연 판단을 합칩니다.
8. counterexamples.json으로 다섯 가지 잘못된 구현을 구별합니다.
참고
- 단계 카드에 정확한 함수 서명과 JSON 필드 계약이 있습니다. 파일 예시는 형식만 보여 주며 정답은 아닙니다.
- 각 단계는
python3 /opt/fixtures/cnpe_sli_workbench.py grade /root/cnpe-sli 단계번호로 직접 검사할 수 있습니다. exercise /root/cnpe-sli는 임시 포트를 사용해 정상·1.1초 지연·503·504·400·404를 실제로 발생시킵니다. X-Lab-Scenario는 학습용 장애 선택 헤더이며 운영 기능이 아닙니다.- 이 과제에서만 2xx·5xx를 유효 시도로 정합니다. 운영에서 429나 4xx를 무조건 제외하면 서비스 책임의 실패를 숨길 수 있습니다. 실제 유효 요청의 계약을 합의해야 합니다.
- [SLI 설계](https://sre.google/workbook/implementing-slos/)·[계측 원칙](https://prometheus.io/docs/practices/instrumentation/)·[오류 예산 정책 예시](https://sre.google/workbook/error-budget-policy/)를 함께 읽으세요.
단계 8개
- 분모부터 계약으로 남기기
- 성공 경로만 세는 버그 없애기
- 느린 201을 좋은 응답으로 세지 않기
- 응답 일곱 건과 지표 네 종류 대조하기
- 중복 수집과 재시도를 분리하기
- 0.1건의 예산과 관측 공백 다루기
- 좋은 가용성이 나쁜 지연을 가리지 않게 하기
- 내 시험이 틀린 구현을 잡는지 확인하기