SLI SLO 설계 - 100-hours-a-week/KTB4-7th-Cloud GitHub Wiki
운영 목표
맴매 V1 조회 API의 성공률과 응답시간을 측정한다. 운영 환경은 AWS 서울 리전(ap-northeast-2)이며, API와 Q1, Q2별로 따로 집계한다.
| 지표 | 초기 SLO |
|---|---|
| 정상 완료율 | 99.9% 이상 |
| 500ms 이내 정상 완료율 | 95% 이상 |
| 1초 이내 정상 완료율 | 99% 이상 |
운영 제공 시작 후 첫 14일을 평가하고, 이후에는 최근 14일을 집계한다. 10월 2일 배포 시 첫 평가는 10월 16일, 다음 리뷰는 10월 23일이다. 초기 목표는 운영 측정 결과에 따라 조정한다.
측정 대상
SLI-1. 매출 분석 조회
- API:
GET /v1/sales/analyses - Q1:
periodType=THIS_MONTH - Q2:
periodType=CUSTOM+ 시작일, 종료일 - 성공: HTTP 200과
COMPLETED, 또는 빈 결과가 예상된 요청의EMPTY. - 요청한 매장,기간,매출 값이 맞아야 한다. 데이터가 있는데
EMPTY를 반환하거나 값이 틀리면 실패다.
SLI-2. 오늘의 솔루션 조회
- 프론트엔드 호출 경로:
GET /v1/solutions/today - 배포 버전의 API 경로와 응답 상태 계약 확인이 필요하다. 확인 전에는 운영 SLO 집계에서 제외한다.
- 조회 API의 정상 응답률/응답시간과 실제 솔루션 제공률을 따로 측정한다.
- 결과 제공률:
COMPLETED와 카드가 반환된 요청 수 ÷ 솔루션 이용 자격이 있는 유효 요청 수 × 100. PENDING,GENERATING은 생성 대기, 진행,FAILED는 생성 실패다.EMPTY,INSUFFICIENT_HISTORY의 정상 판정과 이용 자격은 백엔드 계약 확인 후 정한다.- 테스트에서는 이미 생성된 카드의 매장/기준일을 확인한다.
SLI-3. 매출 업로드 상태 조회
- API:
GET /v1/sales/uploads/{uploadId}— 백엔드 경로 확인 완료. - 성공: HTTP 200과 유효한 상태(
PENDING,PROCESSING,COMPLETED,FAILED) 반환. FAILED는 파일 처리 실패이므로 조회 API의 실패와 별도로 기록한다.- 준비된
uploadId로 조회하고, 다른 매장의 상태가 노출되지 않는지 확인한다.
계산과 집계
N은 정상 세션과 유효 입력으로 보낸 요청 중 Nginx 접근 로그에 기록된 요청 수다.
| 지표 | 계산식 |
|---|---|
| 정상 완료율 | API별 성공 기준을 충족한 요청 수 ÷ N × 100 |
| 500ms 이내 정상 완료율 | 성공 요청 중 500ms 이내 완료한 요청 수 ÷ N × 100 |
| 1초 이내 정상 완료율 | 성공 요청 중 1초 이내 완료한 요청 수 ÷ N × 100 |
- 5xx, 타임아웃, 연결 실패, 유효 요청에서 발생한 예상 밖 400, 401, 403, 404, 429는 실패로 기록한다. Nginx 도달 전 실패는 k6나 외부 프로브에서 별도로 집계한다.
- 점검/배포 중 실패와 EC2/Nginx/Spring Boot/RDS 장애도 포함한다.
- 잘못된 입력 시험, 헬스체크, 개발자/운영자/k6 요청은 운영 SLO에서 제외하고 따로 기록한다.
- 운영 응답시간은 Nginx 기준으로 정리한다. k6의 클라이언트 측 응답시간과 구분하고, p95/p99/요청 수/실패 건수를 함께 남긴다.
부하테스트 조건
| 단계 | 부하 | 실행 시간 |
|---|---|---|
| Smoke | 1 RPS | 2분 |
| Load | 5 RPS | 10분 |
| 추가 테스트 | 10 RPS | 30분 |
매출 분석 Q1, Q2를 각각 50%로 요청한다. 예상 피크 3~5 RPS를 기준으로 잡았으며, 실제 트래픽 비율과 부하는 운영 측정 후 조정한다. 5 RPS가 안정적일 때만 추가 테스트를 진행한다.
솔루션과 업로드 상태는 GET 조회만 확인한다. 파일 업로드 POST/재처리/AI 생성 호출은 제외한다. 개선 전후에는 같은 환경/데이터/스크립트/부하 조건으로 재시험한다.
모니터링과 남은 작업
| 항목 | 상태, 확인할 내용 |
|---|---|
| Nginx 로그 | 표준 출력. 응답 코드, 처리시간과 업무 결과 연결 필요 |
| SLI 대시보드,집계 쿼리 | 미구축. API별 SLI/요청 수/실패 건수 표시 필요 |
| 서버,DB 지표 | EC2 CPU/메모리/CPU 크레딧, JVM GC, RDS CPU/연결 수/지연 확인 |
| 알림 | 미설정. 오류 예산 소진율 기준 검토 중 |
| 담당자/알림 수신자 | 배포 전 지정 필요 |