OpenTelemetry란 무엇인가요?

OpenTelemetry (OTel)는 분산 시스템(예: 마이크로서비스 아키텍처)에서 원격 측정 데이터를 수집, 처리, 내보내기 위한 공급업체에 중립적인 표준을 제공하는 오픈 소스 프로젝트입니다. 관찰성에 대한 이러한 단순하고 보편적인 접근 방식은 개발자가 소프트웨어의 성능과 동작을 더 쉽게 분석하여 애플리케이션의 문제를 보다 쉽게 진단하고 디버깅할 수 있도록 해줍니다. OTel은 다음과 같은 데이터를 수집합니다.

  • 추적 – “문제는 어디에 있나요?”
  • 메트릭 - "문제가 있습니까?"
  • 로그 - "문제가 뭐예요?"

OTel은 프로그래밍 언어나 제품이 아닙니다. 이 오픈소스 프로젝트는 2019년부터 진행 중이며 현재 Cloud Native Computing Foundation (CNCF)에서 관리하고 있습니다.

시작하는 방법을 알아보려면 이 영상을 시청하세요.

OTel에서 생성된 데이터 유형

흔적

추적은 단일 요청 처리 등의 작업 중에 발생하는 이벤트를 기록합니다. 추적은 일련의 스팬 으로 나뉘며, 각각은 작업 단위를 나타냅니다.

예를 들어, 웹 요청에 대한 추적에는 세 개의 span이 포함될 수 있습니다.

  • 요청 수락
  • 데이터베이스 쿼리
  • 응답 보내기

추적은 여러 서비스를 포함할 수 있는 데이터 흐름을 시간순으로 정렬된 일련의 청크로 나누어 쉽게 이해할 수 있도록 도와줍니다.

  • 각 청크에서 발생한 모든 단계
  • 청크가 실행되는 순서
  • 각 단계가 얼마나 오래 지속되었는가
  • 각 단계에 대한 메타데이터

OTel이 추적 정보를 생성한 후 다음 단계는 이를 분석을 위해 추적 백엔드나 도구로 내보내는 것입니다. OTel은 Jaeger , Zipkin , AWS X‑Ray 와 같은 인기 있는 백엔드를 위한 일련의 내보내기 기능을 제공합니다. 이러한 서비스는 추적 데이터를 분석하고 시각화하는 도구를 제공합니다.

메트릭

OTel에서 메트릭은 운영 체제 동작의 특정 측면을 측정한 것이며 키-값 쌍( 메트릭 레이블 이라고 함)으로 시간이 지남에 따라 수집됩니다. 키-값 쌍은 시간 경과에 따른 측정에 대한 맥락을 제공합니다. 예를 들어, 웹 서비스의 응답 시간에 대한 메트릭에는 HTTP 상태 코드, 엔드포인트, HTTP 메서드에 대한 레이블이 포함될 수 있습니다. 모든 지표에는 타임스탬프가 표시되어 시간순으로 정렬할 수 있습니다.

로그

로그는 특정 서비스에서 무슨 일이 일어나고 있는지에 대한 통찰력을 얻는 가장 오래되고 가장 일반적인 방법입니다. 이러한 데이터는 일반적으로 텍스트로 생성되며, 통찰력을 얻으려면 구문 분석이 필요합니다. OTel의 로그 지원은 아직 실험 단계입니다.

OTel의 관찰 기능 세트를 다른 관찰 도구와 비교했을 때 솔루션 아키텍트가 발견한 사항에 대해 자세히 알아보려면 블로그에서 OpenTelemetry를 최신 앱 참조 아키텍처에 통합 - 진행 상황 보고서를 참조하세요.

OTel 계측

OTel은 다양한 인기 있는 프로그래밍 언어 , 라이브러리, 프레임워크와 통합됩니다. 일부 언어에 대한 지원은 다른 언어에 비해 더 포괄적입니다. 예를 들어, JavaScript 계측 라이브러리는 추적 및 메트릭에 대해 자체적으로 "안정적인" 구현을 설명하고 로그에 대한 가장 안정적인 지원 중 일부를 제공합니다. 또한 서비스 로직에 계측 관련 코드를 추가하지 않고도 추적 수신을 시작할 수 있는 자동 계측 옵션도 제공합니다. 반면, Go 와 같은 언어는 메트릭과 로그에 대한 지원이 성숙하지 않았으며 자동 계측 기능이 부족합니다.

원격측정 목표

원격 측정 계측을 설정할 때는 "모든 것을 보내고 통찰력을 기대하는 것"보다 더 정의된 계측 목표 집합으로 시작하는 것이 가장 좋습니다. 데이터를 보기 전까지는 가능한 모든 것을 알 수 없다는 것은 사실이지만, 몇 가지 최소 요구 사항을 설정하면 서비스의 원활한 운영과 유지 관리를 보장하는 데 도움이 됩니다.

다음과 같은 기술적 문제가 있을 수 있습니다.

  • 서비스에 압박이 가해지고 확장이 필요한지 알고 싶습니다.
  • 서비스가 자주 다시 시작되는지 알고 싶습니다.

하지만 다음과 같은 제품 및 사용자 경험 관련 문제일 수도 있습니다.

  • 저는 사용자가 5초 이내에 시스템에서 새로운 메시지를 볼 수 있기를 바랍니다.
  • 메시지가 전송된 후 1분 이내에 알림이 전송되기를 바랍니다.

마이크로서비스를 이해하기 위해 OpenTelemetry 추적을 사용하는 방법 튜토리얼의 예로 다음을 핵심 목표로 정의할 수 있습니다.

  • 새로운 메시지 흐름을 달성하기 위해 요청이 취하는 모든 단계를 이해합니다.
  • 사용자 흐름이 성공적으로 완료되었는지 확인하세요.
  • 사용자 흐름이 종단 간 5초보다 빠르게 실행된다는 확신을 가지십시오(정상적인 상황에서).
  • 알림 서비스가 이벤트(메신저 서비스에서 전달된 이벤트)를 적절한 시기에 처리하고 있는지 알아보세요. 
OTel 구현

OTel은 개발자에게 일관되고 표준화된 방식으로 애플리케이션을 계측하는 데 사용할 수 있는 단일 애플리케이션 프로그래밍 인터페이스(API), 소프트웨어 개발 키트(SDK), 계측 라이브러리 세트를 제공합니다.

OTel이 생성하는 데이터 형식은 업계 표준으로 간주되므로 다양한 원격 측정 집계 및 시각화 솔루션에서 이를 수용합니다. Jaeger와 같은 온프레미스 솔루션을 선택할 수도 있고(이 튜토리얼에서 한 것처럼), SumoLogic 또는 SigNoz 와 같은 SaaS(Software-as-a-Service) 솔루션을 선택할 수도 있습니다.

세 가지 유형의 원격 측정을 모두 관리하기 위해 OTel을 대체할 수 있는 유일한 방법은 여러 도구를 결합하는 것입니다. 이는 마이크로서비스 아키텍처와 인프라를 운영하는 데 따른 본질적인 복잡성에 더해 더욱 복잡한 문제를 야기합니다.

OTel의 맥락에서 API란 무엇인가?

API는 소프트웨어 구성 요소가 서로 상호작용하는 데 사용되는 메서드, 기능, 프로토콜을 정의합니다. OTel API는 개발자가 애플리케이션을 계측하고 원격 측정 데이터를 수집하는 데 사용할 수 있는 표준 메서드 및 프로토콜 세트를 정의합니다.

OTel의 맥락에서 SDK란 무엇인가?

SDK는 표준 또는 애플리케이션 작성자가 제공하는 소프트웨어 개발 도구로, 개발자가 표준을 준수하거나 앱과 상호 작용하는 애플리케이션을 빌드하기 쉽게 해줍니다. SDK에는 일반적으로 라이브러리, 코드 샘플, 문서 및 테스트, 디버깅 및 성능 튜닝을 위한 도구가 포함됩니다. OTel은 추적 , 측정리소스 관리를 위한 SDK를 제공합니다.

추가 자료