서비스 수준 관련 용어
척도
SLI
: Service Level Indicator
→ 서비스 수준을 판단할 수 있는 몇 가지를 정량적으로 측정한 값
- 예)
- 응답 속도, 전체 요청 수 대비 에러율, 시스템 처리량 …
가용성
- SRE가 중요하게 생각하는 SLI 중 하나
- 서비스가 사용 가능한 상태로 존재하는 시간의 비율
- 100% 는 실현 불가능하지만, 100%에 가까운 가용성은 얼마든지 달성 가능
목표
SLO
: Service Level Objectives
→ SLI에 의해 측정된 서비스 수준의 목표 값 혹은 일정 범위의 값을 의미
SLI ≤ 목표치
or 최솟값 ≤ SLI ≤ 최댓값
- SLO를 설정하고 고객에게 이를 공개하는 것은 서비스의 동작에 대한 예측을 가능하게 함.
협약
SLA
: Service Level Agreements
→ SLO를 만족했을 경우 혹은 그렇지 못한 경우의 댓가에 대한 사용자와의 명시적 혹은 암묵적인 계약.
(경제적인 것 혹은 다른 것으로 나타남)
- SLA가 필수적인 것은 아니지만 (ex. 구글의 검색기능), 서비스마다 SLI와 SLO를 설정하고 이를 토대로 서비스를 관리해야 함!!
지표 설정
진짜 중요한게 무엇일까?
이전 셰익스피어 서비스를 다시 가져와보자
SLI 몇 가지를 선정해보자
- 사용자가 직접 대면하는 시스템 → 가용성, 응답시간, 처리량
- 저장소 시스템 → 응답 시간, 가용성, 내구성
- 데이터 처리 시스템 → 처리량, 응답 시간
- Common → 정확성 (Correctness)
척도 수집하기
- 대부분의 지표들의 경우 평균보다는 분포가 중요함!
- 평균만 집계하면 0 혹은 Max 값의 경우 알 수 없음.
척도의 표준화
- 각각의 척도들의 최우선 원칙이 무엇인지를 고민할 필요 없도록 SLI들에 대한 정의를 표준화 해야함
- 예.
- 집계 간격 : 평균 1분
- 집계 범위 : 하나의 클러스터에서 수행되는 모든 테스크들
- 측정 빈도 : 매 10초
- …
목표 설정에 대한 실습
목표 설정
- 명확성을 극대화하기 위해 SLO는
측정 방식
과유효한 기준
이 반드시 명시되어야 함. - 예.
- Get RPC 호출의 99%는 100ms 이내에 수행되어야 한다.
목표치 선택하기
SLI
와SLO
를 어떻게 설정하는지는 제품과 사업에 영향을 미친다.- 목표치 선택에 도움되는 몇 가지 조언
- 현재의 성능을 기준으로 목표치를 설정하지 말 것
- 최대한 단순하게
- 자기 만족 X
- 가능한 적은 수의 SLO 설정
- 처음부터 완벽하게 하려고 하지 말 것
SLO
는 반드시 사용되어야 함- → 사용자가 어떤 점을 중요하게 생각하고 있는지를 반영하기 때문
- 다만, 너무 높은 SLO는 팀이 힘들어짐
- 따라서 현명하게 잘 활용해야함
측정하기
- 시스템의 SLI들을 모니터링하고 측정하기
- SLI를 SLO와 비교해서 별도 대응이 필요한지 판단하기
- 대응이 필요한 경우 어떻게 대응할지 판단
- 대응