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

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

상상해 보세요. 방금 새로운 Rails 앱 개발을 마치고 DigitalOcean 같은 클라우드 프로바이더에 배포했습니다. 어느 개발자 그렇듯 자신의 작업에 자부심을 느끼지만, 여전히 많은 궁금증이 남아 있습니다.

  • 새로 만든 앱이 트래픽을 얼마나 잘 감당할 수 있을까?
  • 적용해 둔 최적화가 실제로 효과가 있을까?

궁극적인 목표는 최고의 사용자 경험을 제공하는 것입니다. 오류나 중요한 이벤트가 발생할 때마다 알림을 받아 신속하게 대응하고 싶을 것입니다.

애플리케이션을 자동으로 모니터링해 주는 환경이 있다면 얼마나 좋을까요? 바로 AppSignal이 그 답입니다! 이 글은 두 부분으로 구성된 시리즈의 첫 번째 편으로, DigitalOcean에 호스팅된 Rails 앱을 효과적으로 모니터링할 수 있도록 AppSignal을 설정하는 방법을 안내합니다.

사전 준비 사항

이 튜토리얼을 따라 하려면 다음 항목들이 필요합니다:

  • 로컬에 설치된 Ruby (본 튜토리얼에서는 3.3.0 버전을 사용합니다)
  • 로컬에 설치된 PostgreSQL (Docker 버전 또는 직접 설치한 버전 모두 가능)
  • 애플리케이션 배포용 DigitalOcean 계정
  • AppSignal 계정 (30일 무료 체험이 제공됩니다)

예제로 사용할 Ruby on Rails 앱 소개

이 튜토리얼에서는 간단한 Rails 7 지출 관리(Expense Tracker) 앱을 사용합니다. 사용자는 회원가입 후 개인 지출 항목을 등록하여 시간에 따른 지출 흐름을 추적할 수 있습니다.

이 앱을 DigitalOcean에 배포한 뒤, AppSignal의 모니터링 솔루션을 구성하여 앱 내부에서 벌어지는 일들을 추적해 보겠습니다.

함께 따라 하려면 소스 코드를 받거나 앱을 포크(fork)해서 시작하세요.

Rails 앱을 DigitalOcean에 배포하기

DigitalOcean의 앱 플랫폼(App Platform)을 사용해 애플리케이션을 배포합니다. 아래 단계는 이미 지출 관리 앱을 포크했고, DigitalOcean 계정이 준비되어 있다고 가정합니다.

로그인한 후 앱을 생성하고 실행하겠습니다. 배포 과정의 일부를 직접 제어하기 위해, 첫 번째 단계로 앱에서 사용할 데이터베이스를 먼저 만듭니다.

앱 데이터베이스 생성

왼쪽 메뉴에서 Databases 링크를 클릭한 다음, Create Database를 눌러 새 PostgreSQL 데이터베이스를 생성합니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

다음 화면에서 데이터베이스 설정을 마치면 데이터베이스 연결 문자열을 반드시 기록해 두세요. 다음 단계에서 앱을 생성할 때 환경 변수로 사용하게 됩니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

이 시점에서 데이터베이스가 모든 외부 연결에 노출되어 있다는 보안 경고가 표시될 수 있습니다. 안내된 링크를 따라가 이 문제를 반드시 해결하세요.

앱 생성 및 배포

이제 앱을 생성합니다. 왼쪽 메뉴에서 Apps 링크를 먼저 클릭합니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

그다음 아래와 같이 앱의 코드 저장소 리소스를 연결합니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

환경 변수 설정 화면으로 이동해 앞서 복사해 둔 데이터베이스 URL 문자열을 입력합니다. 또한 배포 과정에서 사용되므로 RAILS_MASTER_KEY도 함께 환경 변수로 추가해야 합니다.

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

환경 변수 설정이 끝나면 Next 버튼을 클릭해 앱을 배포합니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

앱이 성공적으로 배포되었으니, 이제 AppSignal을 활용해 모니터링을 설정해 보겠습니다.

AppSignal로 Rails 앱 모니터링 설정하기

먼저 AppSignal 계정에 로그인하고 'Ruby & Rails'를 선택합니다.

다음으로 Rails 앱에 AppSignal gem을 추가합니다. 이 강력한 gem은 오류, 예외, 그리고 성능 관련 데이터를 수집해 분석을 위해 AppSignal로 전송하는 역할을 합니다.

앱의 Gemfile을 열고 gem을 추가합니다:

그런 다음 bundle install을 실행합니다.

마지막으로, 계정 전용 API 키가 포함된 설치 스크립트를 실행합니다. 스크립트를 실행하면 아래와 비슷한 결과가 출력됩니다:

스크립트 실행 시 알아둘 몇 가지 사항이 있습니다:

  • AppSignal 대시보드에 표시될 앱 이름을 변경하거나, 기본값을 그대로 사용할 수 있습니다.
  • AppSignal을 앱에 구성하는 방식도 선택할 수 있습니다. 필자는 config 파일 방식을 선택해 config/appsignal.yml 파일을 아래 내용으로 생성했습니다:

여기서 정의하는 항목은 다음과 같습니다:

  • 앱을 AppSignal에 연결하는 push_api_key
  • AppSignal에 표시될 앱 이름
  • AppSignal이 앱을 모니터링할 환경 (이 예제에서는 development와 production 환경 모두)

참고로, 개발 환경에서는 AppSignal 모니터링을 끄고 싶다면 active 플래그를 false로 설정하면 됩니다:

: config 파일 방식과 환경 변수 방식은 동일한 역할을 합니다. AppSignal이 앱에 연결하는 방법, 앱 이름, 그리고 모니터링 대상 환경을 정의하는 것입니다.

모든 과정이 순조롭게 진행되었다면, AppSignal이 앱에서 데이터를 수신하고 있다는 화면이 표시될 것입니다!

Rails용 AppSignal 대시보드 살펴보기

설정이 완료되어 AppSignal이 앱 데이터를 수신하기 시작했다면, 아래와 같은 기본 모니터링 대시보드 화면에 접근할 수 있습니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

: 개발 환경과 프로덕션 환경 모두에 모니터링을 설정했다면, 화살표로 표시된 선택 영역을 통해 손쉽게 전환할 수 있습니다.

기본 뷰에서는 다음과 같은 차트들을 확인할 수 있습니다:

  • 오류율(Error rate) - 단위 시간당 앱에서 발생하는 오류 비율을 표시합니다.
  • 처리량(Throughput) - 분당 요청 수 기준으로 앱이 감당할 수 있는 처리량의 스냅샷을 보여줍니다.
  • 응답 시간(Response time) - 앱의 응답 시간을 표시합니다.
  • 최근 미해결 오류(Latest open errors) - 앱 내에서 발생한 최근 오류 목록을 보여줍니다.
  • 최근 성능 측정(Latest open performance measurements) - 메서드 호출, API 요청 등 최근 성능 측정 항목들을 나열합니다.

이제 AppSignal을 사용해 Rails 애플리케이션에 체계적인 오류 추적을 설정하는 방법을 알아보겠습니다.

AppSignal로 오류 모니터링하기

실행 중인 Ruby on Rails 앱에 영향을 줄 수 있는 오류 유형은 열두 가지가 넘으며, 당연히 일부는 다른 것들보다 훨씬 빈번하게 발생합니다. 이 섹션에서는 몇 가지 오류를 직접 시뮬레이션하고 AppSignal이 이를 어떻게 처리하는지 확인해 보겠습니다. 간단한 예제부터 시작하겠습니다.

지출 관리 앱은 인증에 Devise를 사용하고 있으므로, 사용자 로그인 여부를 검사하는 코드를 추가해 보겠습니다. 권장되는 user_signed_in? 메서드 대신 존재하지 않는 user_logged_in? 메서드를 의도적으로 호출해 ActionView::Template::Error를 유발하겠습니다:

이 변경 사항을 배포하고 프로덕션 앱을 새로 고친 뒤, AppSignal의 프로덕션 환경 대시보드로 이동해 이 오류가 어떻게 표시되는지 지켜봅니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

AppSignal은 애플리케이션에서 발생하는 오류의 세부 정보를 아주 쉽게 확인할 수 있게 해줍니다. 예를 들어 'Latest Open Errors' 대시보드 패널에서 해당 항목을 클릭하면 ActionView 템플릿 오류에 대한 상세 정보를 볼 수 있습니다.

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

오류가 정의되지 않은 메서드(undefined method) 때문에 발생했음을 명확히 확인할 수 있으며, 이는 수정 방향을 잡는 데 큰 도움이 됩니다.

또한 AppSignal의 Errors 대시보드는 LogbookSettings 패널을 통해 추가 정보도 제공합니다:

AppSignal로 DigitalOcean의 Ruby on Rails 앱 모니터링하기: 단계별 완벽 가이드

  • Logbook - 사용자나 팀원이 AppSignal이 추적 중인 오류에 대한 코멘트를 남길 수 있는 공간입니다. Logbook 패널에는 해당 오류와 관련해 취해진 조치들이 시간순으로 기록되어 표시됩니다.
  • Settings - 이 패널에서는 오류를 다른 팀원에게 할당하거나, 알림 설정을 변경하고(이 튜토리얼 두 번째 편에서 자세히 다룹니다), 오류 심각도(severity)를 지정할 수 있습니다.

시리즈의 이번 편은 여기까지입니다!

마무리

이번 튜토리얼에서는 간단한 Rails 애플리케이션을 DigitalOcean의 앱 플랫폼에 배포하고, AppSignal의 애플리케이션 모니터링 플랫폼과 연동하는 과정을 살펴보았습니다. 또한 AppSignal의 Errors 대시보드에서 오류가 어떻게 수집되고 표시되는지도 확인했습니다.

물론 이것은 AppSignal로 할 수 있는 작업의 극히 일부에 불과합니다. 시리즈의 두 번째 편에서는 성능 측정, 이상 징후 감지(anomaly detection), 업타임 모니터링, 로깅에 대해 더 깊이 다룰 예정입니다.

그동안 즐거운 코딩 되세요!

P.S. Ruby Magic의 게시물을 발행 즉시 읽고 싶다면 Ruby Magic 뉴스레터를 구독하고 어떤 글도 놓치지 마세요!