OpenTelemetry와 Ruby on Rails: 시스템 관측 가능성 심층 분석

Kayla Reopelle: What Your Rails App Is Trying To Tell You

작성자
Ruby on Rails Youtube
발행일
2025년 11월 19일

핵심 요약

  • 1 New Relic의 Kayla Riopelo는 OpenTelemetry를 통해 Ruby on Rails 애플리케이션의 관측 가능성을 향상시키는 방법과 중요성을 설명합니다.
  • 2 OpenTelemetry는 벤더 중립적인 데이터 수집 표준으로, 트레이스, 메트릭, 로그를 통합하여 시스템 내부를 깊이 이해하도록 돕습니다.
  • 3 로컬 개발, CI, 그리고 프로덕션 환경에서 OpenTelemetry를 활용하여 성능 최적화, 문제 디버깅, 그리고 더욱 '인간 친화적인' 시스템을 구축하는 실용적인 방안이 제시됩니다.

도입

이번 'On Rails' 팟캐스트에서는 New Relic의 선임 소프트웨어 엔지니어인 Kayla Riopelo가 Ruby on Rails 애플리케이션의 관측 가능성(Observability)에 대해 심도 있게 논의합니다. Kayla는 RailsConf 2025에서 OpenTelemetry 워크숍을 이끌며 개발자들이 이 기술을 직접 경험하도록 도왔으며, 이번 방송에서는 OpenTelemetry가 Rails 개발자에게 왜 중요한지, 그리고 이를 통해 어떻게 더 명확하고 신뢰할 수 있는 시스템을 구축할 수 있는지에 대한 통찰을 제공합니다. 그녀는 관측 가능성이 단순히 프로덕션 문제를 디버깅하는 수단을 넘어, 시스템을 '인간 친화적'으로 만드는 도구임을 강조합니다.

OpenTelemetry와 관측 가능성의 본질

Kayla Riopelo는 관측 가능성을 ‘알 수 없는 미지(unknown unknowns)’에 답하는 데 도움을 주는 도구로 정의하며, 시스템의 출력을 통해 내부 상태를 관찰하는 방법을 설명합니다. 이는 모니터링이 ‘알려진 미지(known unknowns)’에 답하는 것과 대비됩니다. 그녀는 Ruby on Rails가 개발자에게 적절한 창의적 제약을 제공하여 구축 작업을 용이하게 한다고 말하며, 레거시 Rails 코드베이스 작업 경험이 오늘날 시스템 공감 및 관측 가능성에 대한 사고방식에 중요한 영향을 미쳤다고 언급합니다.

Ruby 개발자를 위한 OpenTelemetry

OpenTelemetry는 기존의 벤더별 에이전트(예: New Relic, DataDog)를 대체하는 벤더 중립적인 오픈소스 도구입니다. 이를 통해 애플리케이션 코드에 벤더 종속적인 코드를 줄이고, 수집된 데이터를 여러 벤더로 보낼 수 있습니다. OpenTelemetry는 주로 세 가지 데이터 유형을 수집합니다:

  • 트레이스(Traces): 시스템 내 요청의 전체 흐름을 스팬(span)이라는 개별 단계로 나누어 보여줍니다. Ruby에서는 현재 안정(stable) 상태입니다.

  • 메트릭(Metrics): 집계된 시계열 데이터로, 요청 시간이나 실행 중인 작업 수 등 성능 지표를 측정합니다. Ruby에서는 현재 실험적(experimental) 단계입니다.

  • 로그(Logs): 타임스탬프가 찍힌 텍스트 기록으로, 전통적인 관측 가능성 형태입니다. Ruby에서는 개발 중이지만, 거의 안정화 단계에 있습니다.

OpenTelemetry의 도입으로 벤더들은 데이터 수집 방식이 아닌 가격, 데이터 시각화, 그리고 사용자 경험을 통해 경쟁하게 됩니다. 이는 개발자들이 특정 벤더에 종속되지 않고 최적의 솔루션을 선택할 수 있는 이점을 제공합니다.

로컬 개발 및 CI에서의 OpenTelemetry 활용

OpenTelemetry는 프로덕션 환경뿐만 아니라 로컬 개발 및 CI(Continuous Integration) 환경에서도 유용하게 활용될 수 있습니다. 개발자는 두 가지 구현 아이디어 중 어떤 것이 더 성능이 좋은지 비교할 때, 코드 주변에 스팬을 추가하여 각 접근 방식의 시간을 측정할 수 있습니다. 스팬은 컨트롤러 액션, 모델 호출, 뷰 렌더링, 외부 API 호출 등 요청 처리 과정의 개별 단계를 나타냅니다.

Active Support Notifications를 활용한 계측

Rails의 Active Support Notifications는 계측 도구 개발자들이 널리 사용하는 발행-구독(pub-sub) 인터페이스입니다. OpenTelemetry는 이를 활용하여 Rails 액션에 대한 정보를 수집하고 스팬을 생성합니다. 개발자는 서비스 객체나 Rails의 핵심 서브 젬(Active Record, Active Job 등) 외의 커스텀 로직에 대해 자체적인 Active Support Notifications를 추가하고, OpenTelemetry 툴링을 통해 이를 계측할 수 있습니다. 이는 OpenTelemetry API를 직접 코드에 추가하지 않고도 관측 가능성을 높이는 방법 중 하나입니다.

실용적인 활용 사례

  • 백그라운드 작업(Jobs) 모니터링: UpDownCounter를 사용하여 활성 상태인 작업의 수를 추적하고, Observable Gauge로 큐의 크기를 주기적으로 측정하여 워커 용량 조절이나 작업 스케줄링 최적화에 활용할 수 있습니다.

  • 로그 컨텍스트화: OpenTelemetry의 로깅 도구는 기존 Ruby 로거를 확장하여 로그를 트레이스 및 스팬 컨텍스트와 연결합니다. 이를 통해 특정 요청 흐름 내에서 로그가 발생한 시점과 원인을 더 명확하게 파악하여 디버깅 효율성을 높일 수 있습니다.

성능 영향 및 커뮤니티 참여

관측 가능성 도구를 추가하면 약간의 오버헤드가 발생하지만, OpenTelemetry는 스팬 프로세서(span processor)를 통해 데이터를 전송하기 전에 편집하거나 필터링하여 불필요한 데이터 수집을 줄이고 비용을 관리할 수 있도록 지원합니다. OpenTelemetry 프로젝트는 벤더와 최종 사용자의 협력을 통해 발전하며, Ruby SIG(Special Interest Group)에 참여하여 사양 변경을 제안하거나 버그 수정 및 새로운 계측 추가에 기여할 수 있습니다.

결론

Kayla Riopelo와의 대화는 OpenTelemetry가 Ruby on Rails 개발자들에게 제공하는 강력한 이점을 명확히 보여줍니다. 관측 가능성을 통해 시스템의 '알 수 없는 미지'를 해결하고, 로컬 개발 및 CI 환경에서부터 프로덕션에 이르기까지 전반적인 개발 수명 주기에서 시스템을 더 깊이 이해하고 최적화할 수 있습니다. 벤더 중립적인 접근 방식은 개발자들이 더 유연하게 도구를 선택하고, 데이터 수집보다는 시각화와 사용자 경험에 집중하는 새로운 벤더 경쟁 구도를 만듭니다. OpenTelemetry는 단순히 문제 해결 도구를 넘어, 개발팀이 더 나은 협업을 통해 더욱 신뢰할 수 있고 '인간 친화적인' 시스템을 구축하는 데 필수적인 역할을 할 것입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!