SLI SLO 목표 선정 근거 - 100-hours-a-week/KTB4-7th-Cloud GitHub Wiki

목표 선정 근거

매출 분석 조회 Q1(이번 달), Q2(기간 지정)를 기준으로 정했다. 목표는 운영 트래픽 이력이나 사용자 조사로 검증된 값이 아니며, 운영 측정 후 조정한다.

기준 초기 목표 선정 이유
정상 완료율 99.9% 이상 조회 실패를 0.1% 이내로 제한한다. 요청 1,000건당 실패 1건을 허용하는 수준이다.
500ms 이내 정상 완료율 95% 이상 저장된 결과를 읽는 조회 기능이므로 대부분의 요청이 빠르게 끝나도록 기준을 잡았다.
1초 이내 정상 완료율 99% 이상 평균에 가려지는 일부 요청의 긴 지연을 제한한다.
평가 기간 최근 14일 평일, 주말을 두 번 포함하고, 10월 23일 2차 배포 전에 개선할 시간을 확보한다.

[참고자료] : Grafana k6, Google SRE

부하 조건을 정한 이유

단계 조건 목적
Smoke 1 RPS , 2분 스크립트, 세션 재사용, 응답 검증이 정상인지 확인
Load 5 RPS , 10분 예상 피크 3~5 RPS에서 목표 충족 여부 확인
추가 Load 10 RPS , 30분 5 RPS가 안정적일 때 부하를 높여 확인
  • 3~5 RPS는 팀의 예상 피크이며 실측값은 아니다.
  • 실제 이용 비율을 확인하기 전까지 Q1, Q2를 각각 50%로 요청한다.
  • 세션을 재사용한다. 반복 로그인, 파일 업로드, AI 생성은 처리 특성과 비용이 달라 조회 부하에서 제외한다.
  • Stress, Spike, Soak는 첫 결과에서 필요성이 확인되면 별도로 계획한다.

결과 판정

Q1, Q2를 따로 집계하고, 정상 완료율과 시간 내 정상 완료율을 위 목표와 비교한다. 시간 내 완료율의 분모는 성공 요청만이 아니라 전체 유효 요청 수다.

성공은 HTTP 200과 COMPLETED, 또는 빈 결과가 예상된 요청의 EMPTY다. 준비된 데이터에서 예상 밖 EMPTY나 잘못된 결과는 실패로 기록한다. 운영 집계는 Nginx에 기록된 유효 요청을 기준으로 하며, Nginx 도달 전 연결 실패는 k6 등에서 별도로 기록한다.

  • 비율과 함께 전체 요청 수, 실패 건수를 남긴다. 표본이 작으면 데이터 부족을 표시한다.
  • 실행 버전, 환경, 데이터, 요청 비율, 실제 RPS, 실행 시간과 p95, p99를 기록한다. 서버, DB 지표와 오류 로그를 함께 확인한다.
  • k6 결과는 해당 환경과 부하에서의 측정값이다. Nginx 기준 운영 SLO는 실제 운영 요청으로 별도 평가한다.
  • 병목 수정 후에는 같은 환경, 데이터, 스크립트, 부하 조건으로 재시험한다.

관련 문서

목표를 바꾸면 변경 날짜와 근거를 결정 로그에 남긴다. 실행별 결과와 개선 전후 비교는 보고서에 기록한다.

참고: Google SRE SLO 가이드, k6 성능 테스트 가이드