SLI SLO 설계 및 문서화 - 100-hours-a-week/KTB4-11th-Cloud GitHub Wiki
1. SLI / SLO 대상 선정
StockSpoon V1의 SLI/SLO 측정 대상은 AI 리포트 조회 기능으로 선정하였다.
초기에는 로그인과 AI 리포트 조회를 함께 검토했으나, 로그인 기능은 사용자가 서비스 이용 과정에서 반복적으로 자주 사용하는 기능이 아니며, OAuth 등 서드파티 인증 시스템의 영향을 받을 수 있다.
따라서 로그인 성공률이나 응답시간만으로는 StockSpoon 서비스 자체의 신뢰성을 정확히 판단하기 어렵다고 보았다.
반면 AI 리포트 조회는 사용자가 StockSpoon에서 생성된 투자 결과를 확인하기 위해 직접 사용하는 핵심 기능이며, 실제 사용자 경험과 서비스 품질에 직접적인 영향을 준다.
따라서 V1에서는 AI 리포트 조회 기능 하나를 핵심 SLI/SLO 대상으로 선정한다.
2. AI 리포트 조회 SLI
대상
게시 완료된 AI 리포트 상세 조회 API
GET /api/v1/accounts/{accountId}/orders/{orderId}/ai-report
AI 리포트 조회는 V1에서 사용자가 서비스의 핵심 결과물인 AI 투자 리포트를 확인하는 기능이므로 주요 SLI 측정 대상으로 선정하였다.
Availability SLI
사용자가 요청한 AI 리포트를 정상적으로 조회할 수 있었는지를 측정한다.
정상 조회 조건
- HTTP 200 응답
- 요청한 주문 ID와 응답 주문 ID 일치
- 리포트가 완료 상태
- 유효한 리포트 본문 반환
SLI
정상 조회 요청 수 / 전체 유효한 리포트 조회 요청 수 × 100
단순 HTTP 상태 코드만 확인하는 것이 아니라, 사용자가 실제로 정상적인 리포트 내용을 확인할 수 있는지를 기준으로 측정한다.
Latency SLI
사용자가 AI 리포트를 기준 시간 안에 정상적으로 조회할 수 있었는지를 측정한다.
SLI
3초 이내 성공적으로 처리된 조회 요청 수 / 전체 유효한 리포트 조회 요청 수 × 100
실패 요청을 제외한 성공 요청만을 분모로 두지 않고, 전체 유효 요청을 기준으로 측정하여 장애 상황에서 Latency 지표가 실제보다 좋게 보이는 것을 방지한다.
추가적으로 응답시간의 p95와 p99를 함께 측정하여 일부 느린 요청까지 확인한다.
3. SLI 측정 및 Starter SLO 설정 근거
V1의 실제 사용자 규모와 이용 패턴을 기준으로 AI 리포트 상세 조회 부하테스트를 수행한다.
| 시나리오 | 부하 | 확인 목적 |
|---|---|---|
| Smoke | 1명, 1회 | API 및 응답 데이터 정상 여부 |
| Baseline | 1명, 30초 간격 10회 | 일반적인 저부하 환경 응답시간 확인 |
| Peak | 23명 동시 요청, 각 1회 | 리포트 발행 직후 동시 조회 상황 |
| 분산 조회 | 23명을 10초 또는 60초에 분산 | 실제 사용자 시간차 조회 상황 |
| 반복 부하 | 23명씩 30초 간격, 20회 | 총 460건 반복 요청 시 안정성 확인 |
V1은 현재 사용자가 많지 않은 저부하 서비스이므로 단순히 높은 RPS를 발생시키는 방식보다 실제 사용자 규모에서 발생할 수 있는 조회 패턴을 기준으로 테스트한다.
부하테스트에서 다음 항목을 측정한다.
- 정상 조회 성공률
- 실패 요청 수
- 3초 이내 정상 조회 비율
- p95 응답시간
- p99 응답시간
- 실제 요청 처리율
부하테스트 결과는 SLI 자체를 정의하는 근거라기보다, 초기 Starter SLO의 목표값이 현실적인지 검토하기 위한 참고 데이터로 사용한다.
이후 실제 운영 환경에서 수집되는 SLI를 통해 SLO를 지속적으로 조정한다.
4. Starter SLO
현재 V1은 장기간의 운영 SLI 데이터가 충분히 축적되지 않았기 때문에 최종 운영 SLO가 아닌 Starter SLO를 설정한다.
초기 검토값은 다음과 같다.
| 구분 | Starter SLO |
|---|---|
| Availability | 전체 유효한 리포트 조회 요청 중 99% 이상 정상 조회 |
| Latency | 전체 유효한 리포트 조회 요청 중 99% 이상을 3초 이내 정상 처리 |
| 관찰 지표 | p95 / p99 응답시간 |
현재의 99% / 3초 기준은 확정된 운영 목표가 아니라 초기 검토값이다.
부하테스트 결과와 실제 운영 환경에서 축적되는 SLI 데이터를 바탕으로 해당 기준이 실제 사용자 경험과 서비스 특성에 적절한지 검토하고 조정한다.
5. 운영 방향
운영 환경에서는 다음 데이터를 지속적으로 수집한다.
- 전체 유효한 리포트 조회 요청 수
- 정상 / 실패 요청 수
- Availability
- 3초 이내 정상 처리 비율
- p95 / p99 Latency
- HTTP 5xx
- Timeout
운영 데이터가 충분히 축적되면 Starter SLO와 실제 사용자 경험을 비교하여 SLO를 재조정한다.