관찰 가능성을 다루다 보면 늘 나오는 용어들.
그 중에서도 SLI, SLO, SLA는 늘, 반드시 나옵니다.
SLI - Service Level Indicator
SLI는 단일하면서도 측정 가능한 서비스의 동작을 나타내는 지표입니다.
중요한 것은 SLI의 대상은 명확하게 의미를 갖고 있는 것이어야 합니다.
- 예시
- Availability (%)
- Response time (ms)
SLA - Service Level Agreement
SLA는 여러 SLI를 조합한 형태로 보통 표현되는 지표입니다.
특히 계약 관계가 얽혀 있을때는 패널티 Penalty 나 크레딧 Credit 을 부여하는 기준이 되기도 합니다.
때문에 벤더 제품이나 플랫폼을 사용할 때 늘 첨예한 충돌이 일어나는 지점이기도 합니다.
사내에 제공되는 내부 개발 플랫폼이라 하더라도
SLA를 명확하게 정의해 두는 것이 정신건강을 위해 좋습니다.
SLA의 내용은 보통 (1) 보장하고자 하는 것과, 이를 위해 제시되는 (2) 제약 조건으로 구성됩니다.
- 예시
- 매일 99% 이상의 요청이 200ms 이내의 응답시간으로 응답되어야 하며, 이 때 응답 Body 크기는 1MB 이하여야 합니다. 이보다 큰 Body를 응답하는 경우 응답시간을 보장할 수 없습니다
가만히 보면 SLA를 구성하는 요소들이 바로 SLI입니다.
- 예시 SLA에 포함된 SLI들
- Availability (% of requests)
- Latency (ms)
- Content Length (MB)
SLA는 서비스에 대한 SLA가 일반적으로 이야기되지만
컴포넌트 단위의 SLA도 정의할 수 있습니다.
SLO - Service Level Objective
SLO는 내용상으로보면 SLA와 거의 동일합니다.
따라서 구성 요소도 SLA와 마찬가지로 여러 SLI가 됩니다.
다만 SLA가 "꼭 지켜야만 하는 수준"을 나타낸다면
SLO는 "우리가 달성하고자 하는 수준"을 나타냅니다.