본문 바로가기
클라우드/쿠버네티스

telemetry 메트릭: 동기 vs 비동기, 완벽 정복 가이드! 🚀

by gasbugs 2025. 10. 13.

안녕하세요! 오늘은 시스템의 상태를 파악하는 데 필수적인 옵저버빌리티(Observability)의 핵심 요소, 메트릭(Metrics)에 대해 이야기해 보려고 합니다. 특히 OpenTelemetry에서 메트릭을 수집하는 두 가지 주요 방식인 동기(Synchronous)비동기(Asynchronous) 측정의 차이점을 알기 쉽게 파헤쳐 보겠습니다! 🕵️‍♂️

 

어떤 방식이 언제 사용되는지 알면, 우리 시스템을 훨씬 더 효과적으로 모니터링할 수 있답니다. 자, 그럼 시작해 볼까요?


🚀 동기(Synchronous) 측정: 내가 원할 때 바로바로!

동기 측정 방식은 가장 직관적이고 이해하기 쉬운 방법입니다. 특정 이벤트가 발생하는 바로 그 시점에 코드가 직접 값을 기록하는 방식이죠.

 

마치 가게에 손님이 들어올 때마다 카운터를 "딸깍"하고 누르는 것과 같아요. 🔔

// 사용자가 로그인할 때마다 카운터를 1씩 증가시킨다.
counter.add(1);

 

언제 사용할까요? 🤔

  • HTTP 요청 수: API 엔드포인트가 호출될 때마다 카운트
  • 함수 호출 횟수: 특정 기능이 몇 번 실행되었는지 추적
  • 처리된 항목 수: 작업 큐에서 처리된 아이템 개수 기록

핵심 특징 ✨

  • 코드 실행 흐름 안에서 개발자가 명시적으로 호출합니다.
  • "이벤트"가 발생할 때마다 즉시 측정합니다.
  • 발생 횟수나 누적 값을 추적하는 데 아주 효과적입니다.

⏰ 비동기(Asynchronous) 측정: 알아서 척척, 주기적인 스냅샷!

비동기 측정 방식은 조금 다르게 동작합니다. 값을 직접 기록하는 대신, "현재 값은 무엇이니?"라고 물어볼 수 있는 콜백(Callback) 함수를 등록해두는 방식이에요.

 

그러면 OpenTelemetry SDK가 주기적으로 이 콜백 함수를 호출해서 현재 상태 값을 한 번에 찰칵! 📸 하고 스냅샷처럼 수집해 갑니다.

 

언제 사용할까요? 🤔

  • CPU 사용률: 특정 시점의 CPU 부하 상태
  • 메모리 사용량: 현재 애플리케이션이 사용 중인 메모리 양
  • 큐(Queue)에 쌓인 항목 수: 현재 처리 대기 중인 작업의 개수
  • 활성 사용자 수: 특정 순간에 접속해 있는 사용자 수

핵심 특징 ✨

  • 측정 도구를 만들 때 콜백 함수를 등록합니다.
  • SDK가 주기적으로 콜백을 호출하여 값을 수집합니다.
  • 특정 시점의 "상태(State)"를 측정하는 데 최적화되어 있습니다.

📊 한눈에 보는 동기와 비동기 비교!

구분 동기 (Synchronous) 🚀 비동기 (Asynchronous) ⏰
측정 방식 이벤트 발생 시 즉시 코드에서 값을 기록 SDK가 주기적으로 콜백을 호출하여 값을 수집
호출 주체 개발자 코드 (명시적 호출) OpenTelemetry SDK (주기적 호출)
핵심 개념 이벤트의 발생 (Occurrence) 특정 시점의 상태 (State)
주요 사용 예시 요청 수, 에러 횟수, 처리된 작업 수 CPU/메모리 사용률, 큐의 길이, 활성 커넥션 수

 

맺음말

이제 동기와 비동기 측정 방식의 차이점이 명확하게 이해되셨나요?

 

동기 방식은 발생하는 이벤트를 하나하나 세는 데 사용하고, ✅ 비동기 방식은 시스템의 현재 상태를 주기적으로 확인하는 데 사용합니다.

 

상황에 맞는 올바른 측정 도구를 선택하여 여러분의 시스템에 대한 가시성을 한 단계 더 높여보세요! 더 강력하고 안정적인 서비스를 만드는 첫걸음이 될 것입니다. 💪