본문 바로가기
클라우드

🚀 OpenTelemetry의 숨겨진 보석, Baggage를 아시나요?

by gasbugs 2025. 10. 13.

안녕하세요! 오늘은 분산 시스템 환경에서 개발과 디버깅을 한 단계 업그레이드해 줄 OpenTelemetry의 강력한 기능, Baggage에 대해 알아보려고 합니다.

🤔 분산 추적, 그런데 정보는 어떻게 전달하죠?

마이크로서비스 아키텍처(MSA)에서는 하나의 요청이 여러 서비스를 거쳐 처리되는 경우가 많습니다. 이때 전체 요청의 흐름을 추적하기 위해 OpenTelemetry와 같은 분산 추적 시스템을 사용하죠.

 

하지만 이런 고민, 한 번쯤 해보셨을 거예요. "첫 번째 서비스에서 알게 된 사용자 ID를 마지막 서비스까지 전달할 방법은 없을까?" "각 서비스마다 DB를 조회해서 테넌트 정보를 확인해야 할까?"

 

이러한 고민을 해결해 주는 마법 같은 기능이 바로 Baggage입니다! ✨

 

🎒 Baggage란 무엇일까요?

Baggage는 이름 그대로 '수하물'처럼 우리가 원하는 데이터를 담아 여행(Trace) 내내 들고 다니는 가방이라고 생각하면 쉽습니다.

조금 더 기술적으로 설명하자면, 추적(Trace) 내에서 특정 데이터를 키-값(Key-Value) 쌍으로 저장하고, 하나의 스팬(Span)에서 다른 스팬으로, 심지어 서비스 경계를 넘어서까지 전달(전파)하는 메커니즘입니다.

  • 시작점 🛫: 업스트림 서비스(요청을 먼저 받는 서비스)에서 Baggage에 정보를 담습니다.
  • 여행 중 ➡️: 요청이 다른 서비스로 전달될 때, 이 Baggage 정보도 함께 여행합니다.
  • 도착점 🛬: 다운스트림 서비스(나중에 요청을 받는 서비스)에서는 언제든지 Baggage를 열어 정보를 꺼내 쓸 수 있습니다.

💡 Baggage, 이럴 때 정말 유용해요!

Baggage의 진가는 컨텍스트 정보를 전달할 때 발휘됩니다.

예를 들어, 사용자 A가 '프리미엄' 요금제를 사용하고 있다고 가정해 볼게요.

  1. 인증 서비스 (Service A) 🔐
    • 사용자 A의 로그인 요청을 받고, 이 사용자가 '프리미엄' 요금제임을 확인합니다.
    • Baggage에 plan: premium 이라는 정보를 담습니다.
  2. 주문 서비스 (Service B) 🛒
    • 인증 서비스로부터 요청을 전달받습니다.
    • Baggage를 열어보니 plan: premium 정보가 들어있네요!
    • "아하, 이 사용자는 프리미엄 회원이구나!"라고 즉시 인지하고, 프리미엄 회원 전용 할인 쿠폰을 적용해 줍니다. 🎟️
  3. 알림 서비스 (Service C) 🔔
    • 주문 서비스로부터 요청을 전달받습니다.
    • 마찬가지로 Baggage를 통해 이 사용자가 프리미엄 회원임을 알고, "프리미엄 회원 전용 특별 배송이 시작되었습니다." 와 같은 맞춤형 알림을 보낼 수 있습니다.

만약 Baggage가 없었다면, 주문 서비스와 알림 서비스는 사용자 요금제를 확인하기 위해 각각 데이터베이스를 조회해야 했을 겁니다. 😱 Baggage 덕분에 불필요한 DB 조회를 줄이고, 서비스 간의 의존성을 낮추며, 시스템 전체의 효율을 높일 수 있게 된 것이죠!

 

🔖 스팬 속성(Attribute)과는 뭐가 다른가요?

"어? 그건 그냥 스팬의 속성으로 저장하면 되는 거 아닌가요?" 라고 생각하실 수도 있습니다. 하지만 중요한 차이점이 있습니다.

  • 스팬 속성 (Span Attribute) 🏷️: 해당 '하나의' 스팬에만 종속되는 정보입니다. 딱지를 붙이는 것과 같아서, 그 스팬이 끝나면 정보도 함께 끝납니다.
  • Baggage 🎒: 추적 컨텍스트 자체에 실려 '전체 여행' 동안 계속해서 따라다니는 정보입니다. 여행 가방처럼 서비스 경계를 넘나들죠.

✨ 정리하며

OpenTelemetry의 Baggage는 분산 환경에서 컨텍스트 정보를 손쉽고 효율적으로 전파할 수 있는 매우 강력한 도구입니다. 사용자 정보, 테넌트 ID, 실험 그룹 정보 등 다양한 데이터를 Baggage에 담아 활용한다면, 더욱 스마트하고 성능 좋은 분산 시스템을 구축할 수 있을 겁니다.

이제 여러분의 시스템에도 Baggage라는 멋진 여행 가방을 들려주는 것은 어떨까요?