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/연결 수/지연 확인
알림 미설정. 오류 예산 소진율 기준 검토 중
담당자/알림 수신자 배포 전 지정 필요