Service Level / TIL

Service Level

Featured image

Service Level 관련 용어


서비스를 운영하는 데 있어서, 사용자에게 필요한 적정 수준을 정의하고 제공하기 위해, 서비스 제공자와 사용자는 서로 서비스 수준 협약(Service Level Arguments, SLA)을 맺는다. SRE 엔지니어는 척도를 통한 목표를 이해하고, 실제로 목표를 세우는 방법을 알아야 한다.

서비스 수준 척도 (SLI, Service Level Indicator)

서비스 수준을 판단할 수 있는 몇 가지를 정량적으로 측정한 값이다.

서비스 수준 목표 (SLO, Service Level Objectives)

SLI에 의해 측정된 서비스 수준의 목푯 값 또는 일정 범위의 값을 의미한다.

SLI ≤ 목표치
최소값 ≤ SLI ≤ 최댓값

서비스 수준 협약 (SLA, Service Level Agreementes)

SLO를 달성하지 못하면 어떻게 되는지를 적어놓은 약속이다. SRE가 직접 관여하지는 않는다.


지표 / 주요 목표 설정


서비스나 시스템에 있어 중요한 지표를 판단하는 근거가 필요하다. 적절한 SLI의 선정은 시스템의 분류에 따라 달라질 수 있다.


척도 수집은 측정 원본을 합산하거나, 평균을 내는 방법이 있겠지만, 대부분의 경우 분포가 중요하다. 일부 요청이 빠르게 처리되어도, 나머지 요청이 균일하게 느리다면 실제로 서비스는 느린 것으로 간주할 수 있다. 평균은 이러한 흐름의 변화를 감지하기 어렵다.

SLO를 설정할 때, 주요 SLI의 정의를 표준화시키면 편리하다.

또한 다음과 같은 성능에 중점을 둔 SLO 목표를 설정할 수 있다.


Q1.

모니터링 시스템에는 메트릭 수집을 위한 두 가지 방식의 메커니즘이 존재한다. 바로 Pull 방식과 Push 방식이다. 프로메테우스는 어떤 방식의 메커니즘을 사용할까?

A.
프로메테우스는 미리 설정된 간격으로 타켓 시스템에 HTTP 요청을 보내어 메트릭을 가져온다. 이런 방식으로 메트릭을 주기적으로 Pull하여 수집한다. 또한 이를 통해 확장성과 유연성 있는 메트릭 수집 시스템을 구축할 수 있다.


Q2.

Pull 방식과 Push 방식은 어떻게 다르며, 장단점은 무엇인지, 또한 해당 방식을 사용하는 모니터링 도구는 어떤 것들이 있을까?

A.

Pull 방식 (대표적 도구 : 프로메테우스)

메트릭을 수집하기 위해 수집 서버가 주기적으로 타겟 시스템에 요청을 보내어 메트릭을 가져온다. 수집 서버는 데이터를 원하는 빈도로 수집할 수 있으며, 타겟 시스템은 단순히 메트릭을 노출하는 역할을 한다.

Push 방식 (대표적 도구 : 텔레그라프)

메트릭을 수집 대상 시스템에서 주도적으로 밀어넣는 방식으로, 수집 대상 시스템은 메트릭을 수집하여 메트릭 수집 서버로 전송(Push)한다. 수집 개상 시스템에서 메트릭 수집 및 전송 로직을 구현해야 하며, 수집 주기를 조절하기 어렵다.


Q3.

어떤 조직의 SLO가 다음과 같다. “GET 호출의 99%는 10ms 이내에 수행되어야 한다” 그렇다면, 이러한 SLO를 달성하려면 어떤 메트릭을 수집하고 어떻게 계산해야 할까? (척도는 표준화된 범용 지표를 사용한다.)

A.

1. 응답 시간 메트릭

2. 분위수 계산

3. SLO와 비교

표준화된 범용 지표를 사용하여 위의 메트릭을 측정할 수 있다. 일반적으로 프로메테우스와 같은 모니터링 도구를 사용하여 응답 시간 메트릭을 수집하고, 분위수 계산과 SLO 비교를 위해 쿼리와 알림을 설정할 수 있다. 프로메테우스는 수집된 데이터를 쿼리할 수 있는 PromQL(Query Language for Prometheus)을 제공하며, 알림 규칙을 설정하여 SLO를 모니터링하고 경고를 생성할 수 있다.