이 가이드에서는 AppSignal을 활용하여 성능 병목 현상을 감지, 진단 및 제거하고 Ruby on Rails 애플리케이션에서 적절한 추적을 사용합니다. 추적 설정부터 오류 캡처 및 로깅까지 모든 내용을 다룹니다.
우리는 가장 무거운 로드에서도 애플리케이션이 그 어느 때보다 원활하게 실행되도록 보장할 것입니다!
하지만 먼저 추적을 정의하는 방법과 그 이점을 빠르게 살펴보겠습니다.
추적이란 무엇입니까?
추적은 애플리케이션을 통해 요청 및 작업을 따르는 프로세스입니다. Ruby 애플리케이션에서 추적은 실행 흐름을 캡처하여 다양한 구성 요소의 성능에 대한 깊은 통찰력을 제공합니다.
추적의 이점
추적에는 다음과 같은 여러 가지 이점이 있습니다.
- 성능 최적화 :추적은 성능 개선이 필요한 애플리케이션의 느린 부분을 식별합니다.
- 더 나은 디버깅 :자세한 추적을 통해 코드 문제를 신속하게 파악하고 원인을 파악할 수 있습니다.
- 향상된 신뢰성 :추적은 애플리케이션 동작을 추적하여 보다 안정적이고 효과적인 시스템 작동을 보장합니다.
시나리오:지연되는 Rails 앱
올해 최대 쇼핑일인 블랙프라이데이를 가정해 보겠습니다. 귀하의 Rails 기반 전자 상거래 플랫폼은 결제할 준비가 된 제품으로 가득 찬 장바구니를 갖춘 수천 명의 열정적인 고객으로 붐비고 있습니다. 시스템이 느려지기 전까지는 모든 것이 완벽해 보입니다.
거래가 실패합니다. 버려진 수레가 급증합니다. 공황이 계속됩니다. 이것은 모든 개발자의 악몽입니다. 하지만 비밀무기가 있다면 어떨까요? 실시간으로 문제를 경고할 뿐만 아니라 애플리케이션의 핵심을 심층적으로 분석하여 모든 요청, 모든 데이터베이스 쿼리 및 모든 백그라운드 작업을 추적하는 도구이신가요? AppSignal을 입력하세요. .
AppSignal을 사용하여 Ruby on Rails 앱에 대한 추적을 설정하는 방법
AppSignal을 사용한 추적 기능을 보여주기 위해 AppSignal과 통합할 수 있는 샘플 Rails 전자 상거래 프로젝트를 만들었습니다. 이는 추적을 통해 이러한 문제를 어떻게 식별하고 해결할 수 있는지 직접 확인하는 데 도움이 될 것입니다.
전제조건
- 루비 버전 :AppSignal은 Ruby 2.5 이상과 호환됩니다.
- AppSignal 계정 :AppSignal에서 계정을 만드세요(무료 평가판이 제공됩니다)
이제 AppSignal을 사용하여 Ruby 애플리케이션에서 추적을 설정할 준비가 되었습니다.
1단계:AppSignal Gem 설치
여기에 보석이 있습니다:
간단히 bundle install를 실행하세요. :
2단계:AppSignal 초기화
AppSignal 설치 명령을 실행하여 필요한 구성 파일을 설정하세요.
터미널의 프롬프트를 따르십시오. 구성 파일이나 환경 변수를 선택하여 앱에서 AppSignal을 구성할 수 있습니다. 구성 파일 옵션을 선택하겠습니다.
이 명령은 appsignal.yml를 생성합니다. 구성 디렉터리에 있는 구성 파일입니다. 이 파일은 AppSignal 푸시 API 키와 일부 기본 구성 설정으로 미리 채워집니다.
3단계:AppSignal 구성
config/appsignal.yml를 확인하세요 귀하의 환경에 맞게 올바르게 구성되었습니다. 이 파일에는 다양한 환경(개발, 테스트, 프로덕션)에 대한 구성 설정이 포함되어 있습니다. 가치가 거의 없는 행동은 무시하세요.
그리고 타다! 모든 설정이 완료되었습니다:

Ruby on Rails 애플리케이션 계측
AppSignal은 데이터베이스 쿼리 및 웹 요청과 같은 Rails 애플리케이션의 여러 주요 구성 요소를 자동으로 계측할 수 있습니다. 또한 애플리케이션의 특정 부분을 추적하기 위해 사용자 정의 계측을 추가할 수도 있습니다.
커스텀 레일 계측
코드의 특정 부분을 계측하기 위해 Appsignal.instrument로 두 줄의 코드를 래핑합니다. 방법. 이 방법은 컨트롤러 작업이나 백그라운드 작업의 더 복잡한 부분과 같은 특정 코드 블록을 추적하는 데 사용할 수 있습니다.
이 끝점에 요청을 보내면 N+1 쿼리가 보고됩니다.
N+1 문제는 애플리케이션이 효율적인 단일 쿼리를 사용하는 대신 컬렉션의 각 개체에 대한 관련 레코드를 로드하기 위해 여러 데이터베이스 쿼리를 수행할 때 발생합니다. 이는 특히 대규모 데이터 세트를 처리할 때 성능을 크게 저하시킬 수 있습니다.
이 경우 해결 방법은 모든 주문 가져오기 쿼리를 즉시 로드하는 것입니다. 간단히 다음 코드를 바꾸세요.
다음과 같습니다:
AppSignal을 사용하여 Ruby 오류 수집 및 보고
AppSignal을 사용하면 Appsignal.set_error를 사용하여 애플리케이션 오류를 캡처하고 보고할 수 있습니다. 방법입니다.
다음은 주문 컨트롤러 색인 작업에서 오류를 캡처하고 보고하는 예입니다:
이 예에서는 특정 컨트롤러 작업 내에서 사용자 정의 오류 처리를 보여줍니다. 그러나 AppSignal은 기본적으로 오류를 보고하므로 Appsignal.set_error를 사용하여 명시적으로 오류를 보고한다는 점에 유의하는 것이 중요합니다. 일반적으로 필요하지 않습니다.
모든 컨트롤러 작업에 걸쳐 일관되고 중앙 집중화된 오류 처리를 위해서는 rescue_from을 사용하는 것이 좋습니다. 컨트롤러 수준에서. 이 접근 방식을 사용하면 컨트롤러 작업에서 처리되지 않은 예외가 올바르게 보고되고 관리됩니다.
이를 구현하는 방법의 예는 다음과 같습니다.
오류에 대해> 문제 목록 탭에서 모든 오류 목록, 각 문제의 상태, 오류가 발생한 지 얼마나 되었는지 확인할 수 있습니다.

RuntimeError을 클릭하세요. , 오류 로그와 이 오류를 유발하는 코드 라인을 볼 수 있습니다:

마무리하기 전에 좀 더 고급 추적 기술을 살펴보겠습니다.
고급 추적 기술
우리는 전자상거래 앱의 주문 엔드포인트에 몇 가지 고급 추적 기술을 구현할 것입니다.
이러한 기술은 트래픽이 많은 환경을 효율적으로 관리하고, 데이터 개인 정보를 보호하며, 추적 데이터에 대한 보안 액세스를 보장하는 데 도움이 될 것입니다.
트래픽이 많은 사용 사례
처리량이 많은 환경에서 모든 요청에 대한 추적 데이터를 수집하면 상당한 오버헤드가 발생할 수 있습니다. 샘플링은 요청의 하위 집합에 대해서만 추적 데이터를 수집하여 이를 줄이는 데 도움이 됩니다.
거래에 메타데이터 추가
태그와 샘플 데이터를 사용하여 오류 및 성능 문제에 대한 추가 컨텍스트를 제공할 수 있습니다. 이는 요청, 세션 또는 환경 매개변수에 아직 포함되지 않은 정보를 추가하는 데 도움이 될 수 있습니다. 추가 메타데이터를 전달하고 추가하는 방법에 대해 자세히 알아보세요.
비동기 처리
비동기 처리는 이메일 보내기, 백그라운드 작업 처리, 대규모 데이터 가져오기 처리 등 요청-응답 주기 내에서 수행하기에는 시간이 너무 많이 걸리는 작업을 처리하는 데 사용되는 일반적인 기술입니다. Ruby on Rails 애플리케이션은 일반적으로 Sidekiq, Resque 또는 Delayed Job과 같은 백그라운드 작업 라이브러리를 사용하여 이러한 작업을 관리합니다.
AppSignal은 Active Job, DelayedJob, Shoryuken, Sidekiq, Que 등의 라이브러리와 원활하게 통합되어 백그라운드 작업의 성능과 오류에 대한 통찰력을 제공합니다.
보안 고려사항
보안은 프로덕션에 사용 가능한 모든 애플리케이션에서 매우 중요한 부분입니다. 사용자 개인정보 보호를 유지하려면 민감한 데이터가 추적 데이터에 포함되지 않도록 해야 합니다. 필터 매개변수의 값은 [FILTERED]로 대체됩니다. AppSignal로 전송될 때.
config/appsignal.yml를 수정해 봅시다 마스킹이 필요한 여러 민감한 요청 매개변수를 포함합니다.
Rails filter_parameters를 사용하는 경우 config 옵션을 사용하면 AppSignal이 해당 구성을 Rails의 구성과 병합하므로 두 번 구성할 필요가 없습니다.
이러한 고급 추적 기술을 구현하면 트래픽이 많은 환경을 효율적으로 관리하고 민감한 데이터의 개인 정보를 보호할 수 있습니다. 필터 매개변수에 대해 자세히 알아보세요.
마무리
AppSignal을 사용하여 Ruby 앱에 대한 추적을 설정하려면 추적 기본 사항을 이해하고, 애플리케이션을 준비하고, 단계별 설정 프로세스를 따르는 것이 필요하다는 것을 확인했습니다. 그런 다음 고급 방법과 디버깅 기술을 사용하여 추적을 향상할 수 있습니다.
개발 및 유지 관리 주기에 정기적으로 추적을 적용하면 성능과 안정성이 높아집니다. 지금 AppSignal을 시작하여 Ruby 애플리케이션에 대한 향상된 모니터링과 심층적인 성능 통찰력을 얻으세요.
즐거운 코딩 되세요!
다니엘 아마
객원 저자인 Daniel은 Ruby on Rails, React 및 AI 기반 아키텍처를 사용하여 확장 가능한 웹 및 모바일 플랫폼을 구축한 10년 이상의 경험을 보유한 수석 소프트웨어 엔지니어이자 기술 창립자입니다. 그는 Taskclan의 창시자이며 Medium 및 LinkedIn에서 엔지니어링 리더십, 개발자 워크플로 및 스타트업 실행에 대해 자주 글을 쓰고 있습니다.
Daniel Amah의 모든 기사