Rails 8 업그레이드 핸드북

Jenny Shen - An upgrade handbook to Rails 8 - Rails World 2024 - YouTube

3줄 요약

  • Rails 8 업그레이드는 보안, 신뢰성 및 개발자 경험 향상을 위해 필수적입니다.
  • 업그레이드 과정은 테스트, Ruby 버전 확인, 파일 업데이트 및 프레임워크 기본값 설정을 포함합니다.
  • Shopify는 자동화된 도구와 프로세스를 통해 대규모 Rails 애플리케이션 업그레이드를 성공적으로 관리하고 있습니다.

본 강연은 Rails 8로의 업그레이드 중요성을 강조하며, 토론토 대중교통(TTC)의 유지보수 소홀 사례를 통해 소프트웨어 업그레이드 지연이 초래할 수 있는 문제점을 비유적으로 설명합니다. Shopify의 Jenny는 Rails 업그레이드 방법, 이점, 그리고 Shopify의 대규모 업그레이드 전략을 제시합니다.

Rails 앱 업그레이드는 테스트 확보와 최소 Ruby 버전(3.1) 충족이 선행되어야 합니다. 과정은 최신 패치 업데이트, bin/rails app:update 실행, framework defaults 구성 등을 포함합니다. 이는 보안, 버그 수정, Rails 8의 comml, solid_queue 같은 신기능 활용, 그리고 기술 부채 방지를 위해 필수적입니다. 미루면 결국 대규모 마이그레이션과 서비스 중단으로 이어집니다.

Rails 7.2 및 8에서는 콘솔 확장 API 변경, Active Job 테스트 일관성 강화, Rails.secretscredentials로의 마이그레이션 등 주요 변경사항이 있습니다. 또한 enqueue jobs after transaction commitYJIT 활성화가 기본 적용되어 애플리케이션의 안정성과 성능이 향상됩니다.

Shopify는 수백 개의 Rails 앱 관리 문제를 해결하고자, 업그레이드 캘린더로 연간 업그레이드를 의무화했습니다. rails-upgrade Gem으로 업그레이드 단계를 자동화하고, Solid Track 애플리케이션으로 앱 버전 추적 및 자동 PR 생성을 통해 개발자의 부담을 줄였습니다. 이 전략으로 Shopify는 대부분의 앱을 최신 버전으로 유지할 수 있었습니다.

Rails 애플리케이션을 지속적으로 최신 상태로 유지하는 것은 보안 및 신뢰성 확보, 미래 비용 절감, 그리고 개발자 경험 향상을 위한 핵심 전략입니다. 첫 업그레이드는 어려울 수 있으나, 꾸준히 시스템을 개선하여 기술 부채를 쌓지 않는 것이 성공적인 Rails 앱 운영의 핵심입니다. 이는 애플리케이션을 'TTC'와 같은 문제에 직면하지 않게 하는 가장 효과적인 방법입니다.