콘텐츠로 이동

SLO 방법론에서 실천까지: Part2 SLO 도구 선정


서비스 수준 목표(SLO)는 사이트 신뢰성 엔지니어링 도구 키트의 핵심 요소입니다. SLO는 애플리케이션 성능에 대한 명확한 목표를 정의하는 프레임워크를 제공하여, 궁극적으로 팀이 일관된 고객 경험을 제공하고, 기능 개발과 플랫폼 안정성의 균형을 맞추며, 내부 및 외부 사용자와의 커뮤니케이션을 개선할 수 있도록 지원합니다.

SLO 및 SLI

제1부에서 살펴본 바와 같이, SLO는 서비스 상태와 성능을 반영하는 지표인 SLI에 대한 정확한 목표를 설정합니다. Guance에서 SLO를 관리하면 APM의 트레이스 메트릭, 커스텀 메트릭, 신서틱 데이터, 로그에서 생성된 메트릭 등 모니터링 데이터에 원활하게 액세스하여 SLI로 활용할 수 있습니다. 예를 들어, 일반적인 사용자 요청이 신속하게 처리되도록 하려면 APM의 서비스 중간 지연 시간(중앙값)을 SLI로 사용할 수 있습니다. 그런 다음 SLO를 "모든 역월(calendar month)의 99% 시간 동안, 모든 사용자 요청의 중간 지연 시간(분 단위 계산)이 250밀리초 미만이어야 한다"로 정의할 수 있습니다. 설정한 목표 대비 실제 성능을 정확하게 추적하려면 실시간 성능(예: 60초마다 중간 지연 시간을 계산하여 250ms 임계값과 비교)을 모니터링할 뿐만 아니라, 더 긴 시간 범위에서 해당 임계값을 위반하는 빈도를 측정(매 역월 99% 목표 달성 확인)하는 방법이 필요합니다. Guance는 SLI를 추적하고 이를 설정된 SLO와 관련된 상태로 시각화하므로, 주어진 기간 동안 실제 성능이 목표와 어떻게 비교되는지 즉시 확인할 수 있습니다.

도구 선정

SLI 메트릭의 경우 데이터는 주로 Metrics, Logs, Traces의 세 가지 주요 요소에서 비롯됩니다. image.png Metrics: 주로 시스템 및 애플리케이션 메트릭을 수집합니다. 이러한 메트릭은 서비스에 큰 영향을 미칩니다. 예를 들어 CPU가 갑자기 100% 급증하면 애플리케이션 처리 능력이 급격히 저하되어 사용자에게 심각한 지연 현상으로 나타납니다.

Traces: 방향성 비순환 그래프(DAG)를 기반으로 구축된 소프트웨어 각 모듈 간의 직접적인 호출 관계 및 서비스 호출 체인(링크) 정보입니다. 링크 정보를 통해 어떤 서비스, 어떤 구문이 사용자에게 큰 영향을 미치는지(예: 데이터베이스 느린 쿼리) 신속하게 파악할 수 있습니다.

Logs: 시스템/애플리케이션에서 출력하는 시간 관련 기록으로, 일반적으로 시스템/소프트웨어 개발자가 출력하여 시스템 오류 및 상태를 파악하는 데 사용됩니다. 로그에서 연관성 있는 데이터를 추출하여 Tag 또는 Field로 만듭니다. Tag는 집계 및 그룹화에, Field는 계산 및 집계 기반 분석에 용이합니다.

일반적인 도구

Metrics Prometheus, OpenTelemetry... Traces SkyWalking, OpenTelemetry, Jaeger, Sleuth, Zipkin... Logs ELK, Filebeat, Flume...

너무 많은 무료 오픈소스 도구가 있으며 각 시스템마다 특정 콘솔과 구문이 있습니다. 이러한 도구는 높은 학습 비용과 막대한 유지 관리 비용을 초래하며, 분산된 시스템과 사용자 체계로 인해 여러 플랫폼 간에 끊임없이 전환해야 합니다. 바로 이러한 이유로 SLI는 각 시스템 구성 요소를 집계할 수 있는 중앙 집중식 플랫폼이 필요합니다. 하나의 플랫폼에서 다양한 도구를 통합하고 통일된 구문을 사용하면 학습 비용을 효과적으로 낮출 수 있습니다. Guance는 최고의 선택입니다. Guance는 올인원 솔루션을 제공하며, 현재 200개 이상의 오픈소스 도구 구성 요소를 통합했습니다. 물론 팀을 구성하여 이러한 플랫폼을 직접 구축할 수도 있지만, 권장하지는 않습니다. image.png

한 곳에서 모든 SLO 관리

조직이 여러 제품과 팀에 걸쳐 다양한 SLO를 운영하는 경우, 모든 SLO의 상태를 한 곳에서 시각화하면 우선순위를 설정하고 문제를 해결하는 데 도움이 됩니다. Guance의 서비스 수준 목표 뷰에서는 모든 SLO의 상태와 각 SLO의 잔여 오류 예산을 확인할 수 있습니다.

image.png

메트릭 및 모니터를 기반으로 SLO 생성

SLO 목록 보기에서 SLO 생성 버튼을 클릭하여 SLO를 생성할 수 있습니다. Guance의 SLO는 기존 모니터(예: p90 지연 시간을 목표 임계값과 비교하는 모니터)를 기반으로 하거나 메트릭을 기반으로 계산된 실시간 상태를 기반으로 할 수 있습니다. 메트릭 기반 SLO는 특정 정의를 충족하는 메트릭의 비율(예: 로드 밸런서의 비-5xx 응답 수를 총 응답 수로 나눈 값)을 모니터링하는 데 사용할 수 있습니다.

image.png

SLO 및 오류 예산을 한눈에 확인

SLO를 클릭하거나 이벤트를 열면 SLO의 상태, 목표값, 잔여 오류 예산 등 세부 정보가 표시되는 사이드 패널이 열립니다. Guance는 각 SLO에 대해 오류 예산을 자동으로 생성합니다. 이는 SLO를 위반하기 전까지 감당할 수 있는 불안정성의 정도를 나타냅니다. 이를 통해 목표를 달성하고 있는지, 그리고 개발 속도가 설정된 성능 및 안정성 목표에 적합한지 빠르게 파악할 수 있습니다. Guance는 사용자가 지정한 SLO 목표 및 시간 창에 따라 오류 예산을 자동으로 계산합니다. 예를 들어, 7일 기간 동안 99%의 SLO 목표는 해당 기간 동안 성능이 기준에 미치지 못하는 약 3시간 30분의 오류 예산을 제공합니다.

image.png

SLO 상태 시각화

image.png SLO의 상태를 관련 서비스 또는 인프라 구성 요소에 대한 상세 데이터와 함께 컨텍스트 내에서 추적하려면 Guance 대시보드에 SLO 위젯을 추가할 수 있습니다. 그런 다음 대시보드를 내부 또는 외부와 공유하여 서비스에 의존하는 모든 사람에게 SLO의 실시간 상태를 전달할 수 있습니다.

또한 일반적인 SLO 기준(예: 지난주, 지난달, 이번 주 현재까지, 이번 달 현재까지)을 통해 임계값 위반 빈도를 시각화할 수 있습니다. 지난 30일 동안의 목표를 99%로 설정하고 경고 목표를 99.5%로 설정하면 SLO 상태는 99.5% 이상일 때 녹색, 99.5% 미만일 때 노란색, 99% 미만으로 떨어지면 빨간색으로 표시됩니다.

서비스 상태 표시 및 공유

Guance는 애플리케이션, 인프라, 사용자 경험 등을 이미 모니터링하고 있는 동일한 장소에서 SLO를 간편하게 모니터링하고 관리할 수 있도록 해줍니다. 마찬가지로 중요한 것은, Guance를 사용하면 이러한 SLO 충족에 의존하는 모든 이해관계자나 사용자에게 투명성을 제공할 수 있다는 점입니다. 아직 Guance를 사용하여 서비스 상태와 성능을 모니터링하고 있지 않다면, 무료 체험 계정으로 시작할 수 있습니다.

이 시리즈의 다음이자 마지막 부분에서는 Guance에서 SLO를 최대한 활용하기 위한 모범 사례를 공유합니다.

문서 평가

이 페이지가 도움이 되었나요?