Ruby 개발자 여러분께 AppSignal for Ruby의 새로운 메이저 버전인 3.0을 발표하게 되어 매우 기쁩니다! 🎉
이번 버전에서는 다른 계측(instrumentation) 젬과의 호환성을 높이기 위해 앱과 젬을 계측하는 방식을 변경했습니다. 또한 Ruby 1.9 지원이 제거되었으며, 지원이 중단된(deprecated) 클래스, 모듈, 메서드 및 계측 기능도 함께 삭제되었습니다.
업그레이드 가이드를 꼭 확인해 보세요!
이제부터 이번 새 버전이 여러분과 여러분의 앱에 어떤 변화를 가져다주는지 하나씩 살펴보겠습니다. 시작해 볼까요?
Ruby 1.9 지원 종료
Ruby 1.9는 2015년 2월 23일부로 이미 수명이 다한(End of Life) 버전입니다. AppSignal Ruby 젬은 그동안 최선을 다해 지원을 이어왔지만, 이제 작별 인사를 할 때가 되었습니다.
이번 릴리스에서는 앱과 젬을 계측하는 방식을 변경했습니다. 이 계측 방식은 Ruby 2.0에서 처음 도입된 것으로, 따라서 이번 릴리스부터 AppSignal 젬을 사용하려면 Ruby 2.0 이상이 필요합니다. 가능하다면 앱을 더 최신 Ruby 버전으로 업그레이드해 주시기 바랍니다.
Sidekiq 에러 리포팅 개선
Sidekiq 에러 리포팅이 한층 완성도 높아졌습니다. 새롭게 포함된 Sidekiq 에러 핸들러는 Sidekiq에서 실행된 잡(job)의 오류뿐만 아니라 Sidekiq 자체에서 발생하는 오류까지 보고합니다. 예를 들어, Redis에서 잡 JSON을 읽어오는 과정에서 데이터가 손상된 경우 해당 오류를 보고하므로, 잡이 실행되지 못한 원인을 명확히 파악할 수 있습니다.
다른 계측 라이브러리와의 호환성
3.x 시리즈에서 AppSignal for Ruby 젬은 앱과 다른 젬을 계측하는 내부 방식을 변경했습니다. 덕분에 동일한 계측 방식을 사용하는 다른 젬들과의 호환성이 크게 향상될 것으로 기대합니다. 기존 계측 방식은 새로운 방식과 호환되지 않아 앱이 무한 루프에 빠지면서 SystemStackError가 발생하는 문제가 있었습니다.
Ruby 생태계 역시 새로운 계측 방식으로 이동하고 있는 추세이기에, AppSignal 젬도 다른 젬들과의 호환성을 높이기 위해 계측 방식을 업데이트했습니다.
업그레이드 후 이 문제가 발생하기 시작한다면, 앱에 설치된 다른 APM 및 에러 리포팅 젬도 함께 업그레이드하세요. 최신 버전들은 이미 새로운 계측 방식을 사용하도록 업데이트되었을 가능성이 높습니다. 그래도 문제가 지속된다면 언제든 저희에게 문의해 주세요.
이 변경 사항에 대한 자세한 기술 정보와 배경 설명은 다른 젬과의 호환성 관련 업그레이드 가이드를 참고해 주세요.
기존에 지원 중단 예고됐던 기능 제거
Ruby 젬의 2.x 시리즈 릴리스 과정에서 코드 베이스에 여러 변경 사항이 있었습니다. 저희는 업그레이드 과정에서 아무것도 깨지지 않도록 항상 폴백(fallback)을 통해 기존 메서드가 계속 동작하도록 유지했고, 변경 사항이 있을 때마다 경고 메시지와 해결 단계를 출력하고 로그로 남겼습니다.
이번 메이저 릴리스에서는 Ruby 젬의 유지보수성을 높이기 위해 이러한 폴백들을 제거했습니다. 즉, 이번 릴리스에서 일부 기능이 동작하지 않을 수 있습니다. 업그레이드 가이드를 통해 가장 안전한 업그레이드 방법을 확인하세요. 그러면 3.0으로 업그레이드하기 전에 필요한 변경 사항을 미리 안내받을 수 있습니다.
AppSignal for Ruby를 사용하는 앱에서 사용 중일 수 있으나 이번에 제거된 기능은 다음과 같습니다:
- JavaScript 통합 제거: 앱을 통해 트래픽을 우회시켜 에러를 보고하던 내장 JavaScript 통합 기능을 삭제했습니다. 대신 프런트엔드 전용인 AppSignal for Front-end JavaScript 통합 사용을 권장합니다. 자세한 내용은 업그레이드 가이드의 JavaScript 통합 섹션을 참고하세요.
appsignal notify_of_deploy명령어 제거: 대신revision설정 옵션을 사용하면 배포를 더 정확하게 보고할 수 있습니다. 자세한 내용은 업그레이드 가이드의notify_of_deploy명령어 제거 관련 섹션을 참고하세요.
2.x 시리즈의 주요 변경 사항
이번 Ruby 젬 3.0 릴리스는 2.x 시리즈의 수많은 소규모 릴리스 위에 구축된 결과물입니다. 이번 릴리스에 함께 포함된 눈여겨볼 변경 사항은 다음과 같습니다:
- Ruby 3.0(언어 자체 😉) 지원
- 브레드크럼(Breadcrumb) 지원: 앱 내 사용자 행동을 추적하여, 에러가 발생하기까지 사용자가 어떤 단계를 거쳤는지 확인할 수 있습니다.
- ActionMailer 매직 대시보드: 앱에서 발송되는 메일 전송 현황을 한눈에 시각화합니다.
- 다른 Sidekiq 미들웨어까지 포함한 더욱 정확해진 Sidekiq 에러 및 성능 리포팅
- 개선된 ActiveSupport::Notifications 지원, Shoryuken 배치 처리 지원 등 다양한 세부 수정 사항
AppSignal for Ruby Gem 3.0으로 업그레이드하는 방법
메이저 릴리스 업그레이드를 돕기 위해 공식 문서에서 따라 할 수 있는 업그레이드 가이드를 준비했습니다. 업그레이드 중 문제가 발생하면 언제든 알려주세요. 이 가이드에는 Ruby 젬 업그레이드에 필요한 단계, 주의해야 할 사항, 그리고 앱에 영향을 줄 수 있는 변경 사항의 전체 목록이 담겨 있습니다.
스트루프와플 🍪이 함께하는 APM, AppSignal 만나보기
아직 Ruby/Rails 앱 모니터링에 AppSignal을 사용해 보지 않았다면, 딱 5분만 투자해 확인해 보세요. 신용카드 등록 없이 30일 무료 체험이 가능합니다.
저희는 네덜란드 회사답게, 스트루프와플(stroopwafel, 네덜란드의 환상적으로 맛있는 쿠키)을 전 세계 사용자에게 직접 배송하고 있습니다. 상자를 받고 싶으시다면 고객 지원팀에 연락하기만 하면 됩니다! 📧➡️😋