본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 26. 13:34

Launch HN: Odigos (YC W23) – Kubernetes 클러스터를 위한 즉각적인 분산 트레이싱 (Distributed

요약

Odigos는 eBPF와 OpenTelemetry를 활용하여 Kubernetes 클러스터 내 애플리케이션에 코드 변경 없이 분산 트레이싱을 자동 적용하는 오픈 소스 도구입니다. 기존의 수동 계측 방식이 가진 어려움을 해결하여, 복잡한 마이크로서비스 환경에서 요청의 흐름을 즉각적으로 추적할 수 있게 합니다.

핵심 포인트

  • eBPF 기술을 사용하여 컴파일된 언어(Go 등)도 자동 계측 가능
  • 코드 수정 없이 Kubernetes 환경에서 즉각적인 분산 트레이싱 구현
  • OpenTelemetry 기반으로 기존 모니터링 도구와 연동 지원
  • 트래픽에 따라 자동으로 확장되는 콜렉터(Collectors) 제공

안녕하세요 HN! 저희는 Odigos (https://github.com/keyval-dev/odigos)의 공동 창업자인 Eden과 Ari입니다. Odigos는 애플리케이션을 위한 분산 트레이싱 (Distributed Tracing)을 즉각적으로 생성할 수 있게 해주는 오픈 소스 (Open-source) 프로젝트입니다. 이 도구는 기존의 모니터링 (Monitoring) 도구들과 함께 작동하며, 어떠한 코드 변경도 요구하지 않습니다.

모니터링 도구를 사용했던 저희의 이전 경험들은 매우 답답했습니다. 여러 마이크로서비스 (Microservices)로 구성된 분산 시스템 (Distributed System)을 모니터링하면서, 문제의 근본 원인이 되는 특정 마이크로서비스를 찾아내는 데 너무 많은 시간을 소비하고 있다는 사실을 깨달았습니다. 예를 들어, 한 번은 높은 지연 시간 (Latency)을 유발한다고 의심되는 애플리케이션을 디버깅하는 데 몇 시간을 보냈지만, 실제 문제는 완전히 다른 애플리케이션에 뿌리를 두고 있다는 것을 알게 된 적이 있습니다.

그 후 저희는 바로 이 문제를 해결해 주는 분산 트레이싱 (Distributed Tracing)에 대해 배우게 되었습니다. 단일 애플리케이션 내의 특정 시점 데이터를 포착하는 메트릭 (Metrics)이나 로그 (Logs)와 달리, 분산 트레이싱은 고유한 ID를 태깅하여 분산 환경을 통해 전파되는 요청 (Request)을 추적합니다. 이를 통해 개발자는 각 요청의 컨텍스트 (Context)와 분산 애플리케이션이 어떻게 작동하는지 이해할 수 있습니다.

단점은 구현이 어렵다는 것입니다. 메트릭이나 로그와 달리, 분산 트레이싱의 가치는 여러 애플리케이션에 걸쳐 구현된 후에야 얻을 수 있습니다. 만약 애플리케이션 중 단 하나라도 분산 트레이싱을 생성하지 않는다면, 컨텍스트 전파 (Context Propagation)가 끊어지게 되고 트레이스의 가치는 크게 떨어집니다.

저희는 여러 기업을 위해 분산 트레이싱을 수동으로 구현해 보았지만, 완전한 분산 트레이스를 달성하기 위해 모든 개발 팀이 애플리케이션에 계측 (Instrument)을 수행하도록 조정하는 것이 매우 도전적인 과제임을 알게 되었습니다. 구현이 완료되면 엄청난 가치를 발견할 수 있었고 운영 환경의 문제들을 훨씬 빠르게 해결할 수 있었습니다. 하지만 부분적인 구현은 큰 가치가 없었습니다.

우리는 이 과정을 자동화하기 위해 나섰습니다. 대부분의 방법은 알고 있었지만, 가장 까다로운 부분은 컴파일된 언어(Go와 같은)로 작성된 프로그램에 어떻게 자동으로 계측(Instrumentation)을 수행할 것인가였습니다. 만약 이를 해낼 수 있다면, 분산 트레이스(Distributed Traces)를 생성하는 전체 과정을 자동화할 수 있을 것이었습니다. 조사 과정에서 우리는 Linux 커널이 커널 내부에서 실행될 외부 프로그램을 로드할 수 있게 해주는 기술인 eBPF를 사용하면, 컴파일된 언어를 위한 자동 계측을 개발할 수 있다는 사실을 깨달았습니다. 그것이 마지막 퍼즐 조각이었고, 이를 통해 우리는 Odigos를 개발할 수 있었습니다.

Odigos는 먼저 실행 중인 모든 애플리케이션을 스캔하고 인식한 다음, 각 애플리케이션의 프로그래밍 언어를 파악하고 eBPF와 OpenTelemetry를 사용하여 그에 따라 자동으로 계측합니다. 또한, 데이터를 버퍼링, 필터링하여 선택한 모니터링 도구로 전달하는 콜렉터(Collectors)를 배포하며, 트래픽 양에 따라 이를 자동 확장(Auto-scale)합니다. 이러한 자동화를 통해 개발자들은 구현에 수개월이 걸릴 수 있는 수동 작업 대신, 단 몇 분 만에 분산 트레이스를 활용할 수 있습니다.

프로그래밍 언어 전반에 걸친 자동 계측은 결코 쉬운 작업이 아니며, 특히 정적 바이너리(Go 컴파일러가 생성하는 것과 같은)를 다룰 때는 더욱 그렇습니다. 우리는 관련 헤더를 안전하고 안정적인 방식으로 주입할 수 있도록 여러 메커니즘을 구축했습니다. 우리는 오픈 소스 라이브러리의 서로 다른 버전에 걸쳐 함수와 구조체(Structs)를 추적하는 시스템을 개발했습니다. 또한, eBPF에서 사용자 공간 메모리 관리(Userspace memory management)를 수행하는 시스템을 개발했습니다. 그 결과, Odigos는 Go나 Rust와 같은 컴파일된 언어에 대해 분산 트레이스를 자동으로 생성할 수 있는 유일한 솔루션이 되었습니다. 다른 솔루션들은 사용자가 OpenTelemetry나 eBPF에 대한 전문가여야 하지만, 우리의 솔루션은 관측성(Observability) 기술에 대한 사전 지식을 요구하지 않습니다.

우리의 솔루션은 단 한 번의 명령어를 실행함으로써 어떤 Kubernetes 클러스터에도 설치될 수 있습니다. 설치가 완료되면, 우리는 실행 중인 모든 애플리케이션의 프로그래밍 언어를 감지하고 관련 계측 (Instrumentation)을 적용합니다. JIT 언어 (Java 및 .NET) 또는 인터프리터 언어 (JavaScript 및 Python)의 경우 OpenTelemetry 계측을 배포합니다. 컴파일 언어 (Go, Rust, C)의 경우 우리의 eBPF 기반 계측을 배포합니다. 이 모든 과정은 사용자로부터 추상화되어 있으며, 사용자는 오직 (1) 대상 애플리케이션 중 일부 또는 전부를 선택하고, (2) 모니터링 데이터를 보낼 백엔드 (Backend)를 선택하기만 하면 됩니다.

2022년 5월, 우리는 첫 번째 오픈 소스 프로젝트인 eBPF 기반의 Go 애플리케이션용 자동 계측 (Automatic Instrumentation)을 출시했습니다. 이후 우리는 이 프로젝트를 OpenTelemetry 커뮤니티에 기부하였으며, 현재는 Go Automatic Instrumentation SIG의 일부로 개발되고 있습니다.

우리는 개방형 표준 (Open Standards)을 강력히 신뢰합니다. 따라서 Odigos가 사용하는 계측 및 수집기 (Collectors)는 모두 OpenTelemetry 커뮤니티에서 개발한 오픈 소스 프로젝트를 기반으로 합니다. 이는 또한 우리가 특정 벤더에 종속되지 않도록 (Vendor-agnostic) 해줍니다.

현재 우리는 오픈 소스 프로젝트를 구축하는 데 집중하고 있습니다. 아직 가격 책정이나 유료 기능은 없지만, 향후에는 엔터프라이즈 기능을 포함한 Odigos의 관리형 버전 (Managed version)을 제공할 계획입니다.

더 자세히 알고 싶으시다면, 우리의 문서 (https://docs.odigos.io)를 확인하고, 데모 영상 (https://www.youtube.com/watch?v=9d36AmVtuGU)을 시청하며, 웹사이트 (https://odigos.io)를 방문해 주세요.

분산 애플리케이션의 트레이싱 (Tracing) 및 모니터링에 대한 여러분의 경험이나 공유하고 싶은 다른 어떤 것이든 듣고 싶습니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0