안녕하세요. 오늘은 사용자에게 품질의 보장하는 합의에 대한 용어에 대해 설명하겠습니다.
만약 시스템에 SLA가 있다면 각 SLO는 시스템 내의 특정 척도에 대한 SLA 내에서의 개별 협의를 뜻함
따라서 SLA는 모든 서비스 수준 목표를 하나의 법적 문서로 통합한 것에 해당
하지만 SLA가 없는 시스템일지라도 SLO는 꼭 필요함
왜냐면 이런 목표가 따로 설정되어 있지 않다면 내부나 외부 사용자가 우리 시스템을 사용함으로써 얻을 수 있는 기대치가 무엇일지 불명확 할수 밖에 없음
서비스 수준 척도는 서비스 수준 목표를 이행하는 데 관련된 양적 척도를 의미
ex) 모니터링 시스템을 사용해서 측정하거나 로그에서 계산해서 나온 실제 숫자값
일단 이 서비스 수준 척도에 따라 숫자를 계산하게 되면 그 산출된 값을 나중에 서비스 수준 목표를 정할 때 설정한 목표치와 비교
ex) 성공적인 응답을 받은 사용자 요청의 퍼센티지를 산출해서 그 값을 시스템의 가용성을 측정하는 척도로 사용하여 서비스에 대해 설정한 가용성 서비스 수준 목표인 99.9%와 비교
ex)각 요청의 반응 시간을 수집해서 그 값을 시간대 별로 버킷화한 다음 사용자가 경험한 반응 시간의 평균이나 백분위 분포를 계산할 수도 있음 그리고 나중에 그 산출값을 기존에 설정한 백분위 90에 100밀리초라는 종단간 지연 시간 SLO와 비교할 수 있답니다
사용자 관심 지표
SLO의 갯수
현실적인 SLO 설정
오류에 대비한 예산을 포함해 현실적인 목표를 설정
99.9%의 가용성을 제공할 수 있다고 해서 반드시 언제나 그래야만 한다는 건 아님 대신에 제공 가능한 더 낮은 수준의 가용성을 보장하는 데 집중해야 함 그래야 비용도 절감하고 예상치 못한 문제에 대비할 여력도 생김
서비스 수준 목표가 외부의 서비스 수준 협의로 구현되어 있는 경우에는 더욱
이런 경우 회사는 공격적인 성향의 내부 서비스 수준 목표와는 별개로 더 느슨한 수준의 외부 서비스 수준 목표를 따로 설정
예를 들어 외부적으로는 가용성을 99.9%로 설정하더라도 내부적으로는 99.99%의 가용성으로 설정 내부적으로 더 좋은 품질의 서비스를 위해 노력하는 동시에 클라이언트 측으로는 신경을 조금 덜 써도 됨
복구 계획
SLO를 설정하는데 있어, 클라이언트 쪽 외부 목표와 내부 목표의 균형을 맞추는게 중요하겠네요!
SLA, SLO, SLI 의 구체적인 적용사례가 궁금해지네요
좋은 글 감사합니다! 👏