Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

AppSignal, 장기 실행 스트리밍 Rack 응답 지원으로 Ruby 모니터링 한층 강화

AppSignal이 이제 장기 실행(long-running) 스트리밍 Rack 응답에 대한 개선된 모니터링 기능을 제공하게 되어 기쁘게 발표합니다. 이번 개선을 통해 Ruby 애플리케이션의 오래 실행되는 응답 상태를 더 깊이 있게 파악할 수 있으며, 요청 본문이 전송된 후 몇 분, 심지어 몇 시간 뒤에 발생하는 오류까지 놓치지 않고 감지할 수 있습니다.

이번 관찰 가능성(observability) 향상은 Cheddar Payments 엔지니어링 디렉터인 율릭 타르카노프(Julik Tarkhanov)의 소중한 기여에서 비롯되었습니다. 그의 작업 덕분에 Ruby 젬(gem) 내에서 장기 실행 응답을 모니터링할 수 있게 되었고, 실시간 성능 모니터링 지원도 크게 강화되었습니다.

이 글에서는 이번 추가 기능이 Ruby 앱 모니터링에 어떤 의미가 있는지 살펴보고, 오픈소스 방식이 고객과의 협업을 통해 실행 가능하고 높은 효과를 내는 인사이트를 제공하는 데 어떻게 기여하는지 소개하겠습니다.

장기 실행 Rack 응답을 모니터링해야 하는 이유

일반적으로 AppSignal은 Rack 응답을 모니터링할 때 응답 본문을 렌더링하는 데 걸리는 시간을 추적할 수 있습니다.

AppSignal, 장기 실행 스트리밍 Rack 응답 지원으로 Ruby 모니터링 한층 강화

하지만 기존에는 대용량 파일 다운로드처럼 오랜 시간 실행되는 응답은 모니터링할 수 없었습니다. 즉, 응답 렌더링에 얼마나 걸렸는지, 렌더링 과정에서 예외가 발생했는지 알 방법이 없었습니다.

이 문제는 다소 틈새적인 사례라 많은 고객의 응답 모니터링 경험에는 해당하지 않지만, Cheddar Payments에게는 실질적인 문제였습니다. 그들의 사용 사례에서는 장기 실행 응답을 모니터링할 수 없어 긴 프로세스 도중 성능 추적과 잠재적 장애 진단에 어려움을 겪었습니다.

“Cheddar Payments에서는 Rails가 주요 보고서를 zip 파일 형태로 스트리밍 방식으로 전달하는 다운로드 기능을 제공합니다. 그런데 이 보고서 서빙이 AppSignal 모니터링에서 제외되어 있다는 것을 알게 되었죠. 앱 내 HTTP 상호작용의 ‘메인’ 부분이 끝나면 AppSignal 추적이 중단되기 때문입니다. 보고서 생성 과정에서 오류가 발생했는데도 AppSignal에서 확인할 수 없었기 때문에, 이러한 응답을 추적하는 것이 핵심이었습니다.”

율릭 타르카노프(Julik Tarkhanov), Cheddar Payments 엔지니어링 디렉터

커뮤니티 기여로 완성된 장기 실행 Rack 응답 모니터링 솔루션

WeTransfer 재직 당시 Rack의 장기 실행 응답을 다룬 경험이 있던 율릭은 AppSignal의 Ruby 젬에 기여하기로 결심하고, 장기 실행 응답을 모니터링하는 솔루션을 직접 구현했습니다.

“이미 APM(AppSignal)이 있고, 충분히 구현할 수 있는 기능이라면 굳이 하지 않을 이유가 없잖아요?”

다른 대안을 찾는 대신, 율릭의 첫 번째 풀 리퀘스트는 AppSignal의 트레이스 안에서 장기 실행 Rack 응답을 모니터링하는 방법을 도입했습니다. AppSignal 통합 팀의 Tom의 노력 덕분에 PR #1140에서 솔루션을 완전히 구현했고, 엣지 케이스를 처리하고 신뢰성을 개선하여 Ruby 젬 버전 3.10으로 출시했습니다.

율릭의 솔루션 덕분에 그의 팀은 다른 도구를 도입하거나 갈아타지 않고도 AppSignal을 계속 사용하면서 더 오래 실행되는 응답을 추적할 수 있게 되었습니다.

이제 AppSignal은 장기 실행 응답의 소요 시간을 캡처하고, 응답 렌더링 중 어느 시점에서든 문제가 발생하면 고객에게 알려줄 수 있습니다. 이는 고객에게 또 하나의 관찰 가능성 계층을 더해주는 결과입니다.

AppSignal, 장기 실행 스트리밍 Rack 응답 지원으로 Ruby 모니터링 한층 강화

오픈소스 기여를 소중히 여기는 이유

AppSignal은 항상 고객 피드백과 기능 요청을 소중히 여겨왔습니다. 모든 요청이 프로덕션에 반영될 수는 없지만, 고객의 니즈를 탐색하는 데는 언제나 열려 있습니다.

모두에게 도움이 될 만한 니즈를 발견하면, 이를 실제로 동작하는 솔루션으로 만들 수 있는지 최선을 다해 검토합니다. Rails 커뮤니티의 많은 이들처럼 우리도 오픈소스 협업의 힘을 믿으며, 이를 통해 고객의 변화하는 요구에 민첩하게 대응할 수 있습니다.

소규모 부트스트랩 팀인 우리가 모든 고객의 위시리스트에 있는 모든 기능을 구현할 수는 없습니다. 바로 이 지점에서 젬에 대한 커뮤니티 기여가 빛을 발합니다. 커뮤니티의 도움으로 제품 역량을 확장하고 중요한 기능을 더 빠르게 제공할 수 있기 때문입니다.

“우리의 오픈소스 철학은 통합 작업을 최대한 공개적으로 진행하는 것입니다. 커뮤니티의 기여를 보는 것은 언제나 즐거운 일이며, 아이디어와 개선 제안은 언제나 환영합니다.”

타이스 카디에르(Thijs Cadier), AppSignal CTO

AppSignal은 하는 모든 일의 중심에 고객을 두고, 애플리케이션을 모니터링하고 최적화하는 데 최고의 경험과 도구를 제공하기 위해 끊임없이 노력합니다. 고객들이 AppSignal을 사랑하는 이유는 다음과 같습니다.

  • 무료 전문가 지원
  • 투명한 가격 정책
  • 유연한 업그레이드 정책
  • 사용하기 쉬운 인터페이스

아직 확신이 서지 않으신가요? 율릭의 말을 들어보세요.

“AppSignal은 훌륭한 제품이며, 도구 측면에서 부담 없이 사용해볼 수 있습니다. OpenTelemetry가 본격화되면서 앞으로 더 좋아질 것입니다.”

설치 마법사를 통해 무료 체험을 시작하면 커피 한 잔 마시는 시간보다 짧은 시간 안에 AppSignal을 실행할 수 있습니다. 아, 새 고객에게 요청 시 스트룹와플(stroopwafel)을 보내드린다는 것도 말씀드렸나요?

궁금한 점이 있거나 AppSignal이 앱 메트릭을 최대한 활용하는 데 어떻게 도움을 줄 수 있는지 알고 싶으시다면 언제든 연락해 주세요. 항상 기꺼이 도와드리겠습니다!

AppSignal, 장기 실행 스트리밍 Rack 응답 지원으로 Ruby 모니터링 한층 강화

코너 제임스(Connor James)

AppSignal 개발자 마케팅 매니저. 팟캐스트 중독자이자 칸놀리(cannoli)를 너무 사랑해서 이름을 ‘Connoli’로 바꿀까 고민 중입니다. color에 ‘u’가 들어간다고 믿는 사람이기도 합니다. 마이크 앞, 무대 위, 아니면 쉬는 시간에는 소파에 누워 있는 모습을 발견할 수 있습니다.

코너 제임스의 모든 글 보기