Service Level은 일정 기간 내에 사용자에게 제공되는 서비스를 측정한 용어다.
서비스 레벨 목표 Service-Level Objectives, SLO는 시스템에서 기대되는 가용성을 설정한 목표다.
서비스 레벨 지표 Service-Level Indicators, SLI는 시스템의 가용성을 파악하기 위한 핵심 측정치와 지표다.
서비스 레벨 계약 Service-Level Agreements, SLA는 시스템이 SLO를 충족하지 못할경우 발생하는 상황과 합의된 내용을 설명하는 법적 계약이다.
예를 들어 웹 애플리케이션 SLO가 1주일동안 99퍼센트에 해당하는 시간동안 2초 이내에 비디오 재생을 시작하는 것으로 가정했을때 SLI는 2초 이내에 재생을 시작한 비디오의 비율을 측정하고 SLA는 이러한 SLO와 고객과 서비스 공급업체가 합의한 기타 SLO와 적용되는 범위 그리고 성능을 측정하는데 사용되는 메트릭인 SLI가 모두 포함된다.
서비스 성능과 안정성을 측정하는 방법에 초점을 맞추는 사이트 안정성 엔지니어링(Site Reliability Engineering, SRE)으로 인해, 분산 시스템의 업타임과 안정성을 유지하기 위한 모범 사례들이 보편화 되었다.
Service Level Obejctives는 시스템에서 기대하는 가용성을 설정한 목표로 일정 기간동안 백분율료 표시된다.
서비스 레벨 목표는 가용성과 업타임이라는 공통된 의미를 기반으로 팀들이 협업하는데 도움이 된다. SLO를 안정성과 가용성을 측정하는 표준으로 사용할 수 있다. 이전 예시에서 설명한 것처럼 1주일간 99퍼센트의 웹 비디오가 2초내에 재생된다라는 그것이다.
Service Level Indicators는 사용자가 시스템의 가용성을 경험하는 방식을 정량적으로 측정한 것이다. 서비스 레벨의 성공 비율을 백분율로 나타낸다
서비스 레벨 지표는 SLO와 관련해 설명이 되지만, SLI는 시스템 안정성에 대한 실시간 신호를 제공한다. SLI는 임계치보다 빠른 요청의 비율 또는 파이프라인으로 들어오는 기록의 비율을 측정하여 정확한 값을 산출할 수 있다. 앞의 예시의 경우 SLI는 웹사이트 2초 이내에 재생한 비디오 비율을 측정하고 이를 통해 SLO와의 차이를 알 수 있다.
SLI는 임계치보다 빠른 요청의 비율 또는 파이프라인으로 들어오는 기록의 비율을 측정하여 정확한 값을 산출할 수 있다. 앞의 예시의 경우 SLI는 웹사이트에서 2초 이내 재생을 시작한 비디오의 비율을 측정한다. 이를 통해 SLO와 얼마나 차이가 나는지 알 수 있다.
서비스 레벨 계약 또는 협약은 고객이 서비스를 사용할 때 기대하는 서비스 레벨을 정의한다.
서비스 레벨 계약은 서비스 제공업체와 고객 간의 계약으로 공급업체가 제공할 서비스를 문서화하고 공급업체가 충족해야하는 서비스 표준을 정의한다. SLA에는 SLO를 위반할 경우 어떤 페널티가 있는지를 설명하는 것이 있다.
앞의 예시의 경우 SLA에는 웹 애플리케이션에 대한 모든 SLO는 물론 포함될 서비스 범위, SLO에 대한 성능 측정에 사용되는 모든 SLI가 포함된다. 계약에는 또한 서비스 제공업체와 고객의 책임도 포함된다.
SRE팀 안정성 엔지니어 및 교차 기능 팀은 서비스의 안정성을 정의하고 측정하는데 어려움이 많으며 교차 기능 팀은 서비스나 시스템의 모든 측면에서 중요한 메트릭에 대한 포괄적인 뷰를 생성해 업타임과 성능을 쉽게 측정할 수 있어야 한다.
서비스 레벨은 SRE 팀과 안정성 엔지니어가 애플리케이션과 인프라에서 주요 구성요소를 식별하는 데 도움이 된다. 이들은 하나 이상의 구성요소가 외부 고객들에게 기능을 노출시키는 경우를 알아야하기 때문에 이러한 교차점을 시스템 경계라고 부른다. 시스템 경계는 사이트 안정성 엔지니어가 시스템 성능 및 안정성의 실제 상황을 설명하기 위해 서비스 레벨 지표와 목표를 측정하는 지표에 적용하는 지점이다.
즉 서비스 범위를 설정하고 어떤게 sli고 slo 준수 요구사항이 무엇인지 결정하려면 많은 노력이 필요하고 이러한 지표들은 sre엔지니어, 팀, 모든팀을 위해 전체 스텍에서 가용성 및 업타임에 대한 기준을 신속하게 결정할 수 있도록 중요한 지표라고 볼 수 있다.