계측(Instrumentation) — 코드 기반과 제로 코드 방식

계측(Instrumentation) — 코드 기반과 제로 코드 방식

계측은 시스템이 관측 가능(observable)해지기 위해 반드시 거쳐야 하는 과정이에요. 즉 시스템 구성 요소의 코드가 트레이스·메트릭·로그 같은 신호를 내보내도록 만드는 것이죠. OpenTelemetry로 코드를 계측하는 방법은 크게 두 가지예요. 코드 기반(Code-based) 솔루션제로 코드(Zero-code) 솔루션입니다.

출처: https://opentelemetry.io/docs/concepts/instrumentation/

본문

코드 기반(Code-based) 방식

공식 API와 SDK를 사용해 애플리케이션 내부에서 더 깊은 통찰과 풍부한 텔레메트리를 얻는 방식이에요. OpenTelemetry API를 사용해 애플리케이션에서 직접 텔레메트리를 생성하며, 이는 제로 코드 방식이 생성하는 텔레메트리를 보완하는 필수 역할을 해요.

제로 코드(Zero-code) 방식

시작할 때 아주 좋고, 수정할 수 없는 애플리케이션에서 텔레메트리를 뽑아낼 때도 좋은 방식이에요. 사용하는 라이브러리나 애플리케이션이 실행되는 환경에서 풍부한 텔레메트리를 제공하죠. 다른 말로는 애플리케이션의 '경계(edges)'에서 무슨 일이 일어나는지에 대한 정보를 준다고 볼 수 있어요. 자동 계측(auto-instrumentation)이라 불리기도 해요.

추가적인 OpenTelemetry 이점

  • 라이브러리가 OpenTelemetry API를 의존성으로 가져도, OpenTelemetry SDK를 import 하지 않는 한 그 라이브러리를 쓰는 애플리케이션에는 영향이 없어요.
  • 각 신호에 대해 생성·처리·내보내기의 다양한 방법을 쓸 수 있어요.
  • 구현체에 컨텍스트 전파가 내장되어 있어 어디서 생성됐든 신호를 서로 연관 지을 수 있어요.
  • Resource와 Instrumentation Scope로 호스트·운영체제·K8s 클러스터 같은 서로 다른 엔티티에 따라 신호를 묶을 수 있어요.
  • 각 언어별 API/SDK 구현은 OpenTelemetry 스펙의 요구사항과 기대치를 따릅니다.
  • Semantic Conventions는 코드베이스·플랫폼 전반의 표준화를 위한 공통 명명 스키마를 제공해요.

계측 유형 살펴보기

  • Zero-code: 코드를 쓰지 않고 애플리케이션에 관측성을 추가하는 방법
  • Code-based: 코드 기반 계측의 필수 단계를 설정하는 방법
  • Libraries: 라이브러리에 네이티브 계측을 추가하는 방법

더 알아보기

  • Zero-code Instrumentation: 환경·라이브러리에서 자동으로 신호를 생성
  • Code-based Instrumentation: OpenTelemetry API로 직접 계측
  • Libraries: 라이브러리에 네이티브 계측을 심는 법
  • Semantic Conventions: 신호·속성의 공통 명명 규칙