🔍 OpenTelemetry 관찰가능성

시스템을 이해하고 문제를 해결하는 현대적 접근 방법

🎯 관찰가능성(Observability)이란?

핵심 개념

관찰가능성은 시스템의 내부 동작을 몰라도 외부에서 시스템을 이해할 수 있게 해주는 능력입니다.


주요 특징:

  • ✅ 시스템에 대한 질문을 할 수 있음
  • ✅ 새로운 문제("unknown unknowns")를 쉽게 해결
  • ✅ "왜 이런 일이 발생하는가?"에 대한 답을 제공
애플리케이션 계측
신호 발생
(Traces, Metrics, Logs)
시스템 이해

📊 신뢰성과 메트릭

🎯 신뢰성(Reliability)

"서비스가 사용자의 기대대로 작동하고 있는가?"

예: 시스템이 100% 가동 중이어도, "장바구니 추가" 버튼이 항상 올바르게 작동하지 않으면 신뢰할 수 없습니다.

📈 메트릭(Metrics)

시간에 따른 숫자 데이터의 집계

  • 시스템 오류율
  • CPU 사용률
  • 서비스 요청 속도

📍 SLI

Service Level Indicator

서비스 동작의 측정값
예: 웹 페이지 로딩 속도

🎯 SLO

Service Level Objective

신뢰성을 조직에 전달하는 수단
SLI를 비즈니스 가치에 연결

🔄 분산 추적 이해하기

분산 추적은 복잡한 분산 시스템을 통해 전파되는 요청을 관찰할 수 있게 해줍니다.

추적의 구성 요소

📝 로그(Logs)

타임스탬프가 있는 메시지

I, [2021-02-23T13:26:23.505892 #22473] INFO -- : [6459ffe1-ea53-4044-aaa3-bf902868f730] Started GET "/" for ::1

🔲 스팬(Spans)

작업 또는 연산의 단위

  • 이름
  • 시간 관련 데이터
  • 구조화된 로그 메시지
  • 메타데이터(속성)

🌐 분산 추적(Distributed Traces)

하나 이상의 스팬으로 구성된 요청의 전체 경로

추적 시각화 (Waterfall Diagram)

루트 스팬 - 전체 요청 (450ms)
API 호출 - 사용자 인증 (120ms)
데이터베이스 쿼리 - 사용자 정보 조회 (180ms)
캐시 확인 (20ms)
DB 연결 (160ms)
응답 생성 (50ms)

🏷️ 스팬 속성 예시

키(Key) 값(Value)
http.request.method "GET"
network.protocol.version "1.1"
url.path "/webshop/articles/4"
server.address "example.com"
http.response.status_code 200
client.address "192.0.2.4"

💡 왜 관찰가능성이 중요한가?

🔍 문제 근본 원인 파악 ⚡ 성능 문제 디버깅 🎯 시스템 동작 이해 📊 데이터 기반 의사결정 🚀 신속한 문제 해결