본문으로 건너뛰기

Rails 7.2에서 Rails 8로의 업그레이드 가이드: 단순함과 성능의 조화

Upgrading from Rails 7.2 to Rails 8 - The Latest and Greatest

작성자
발행일
2026년 02월 26일
https://blog.saeloun.com/2026/02/26/rails-7-to-8-upgrade-guide/

핵심 요약

  • 1 Rails 8은 Redis 의존성을 제거하는 Solid Queue, Cache, Cable을 도입하여 인프라 구성을 획기적으로 단순화하고 운영 비용을 절감합니다.
  • 2 최신 Ruby 3.4와 YJIT 활성화를 통해 이전 버전 대비 최대 40% 이상의 성능 향상과 더불어 비약적인 메모리 효율성을 제공합니다.
  • 3 내장된 인증 시스템 생성기와 PWA 지원, Kamal 2 배포 도구를 통해 외부 라이브러리 없이도 현대적인 웹 애플리케이션을 신속하게 구축할 수 있습니다.

도입

Rails 8은 2024년 11월에 출시된 최신 버전으로, "단순함과 성능"에 초점을 맞추어 개발되었습니다. 이번 업그레이드는 Redis와 같은 외부 종속성을 제거하고 프레임워크 내장 기능을 강화하여 인프라 복잡도를 획기적으로 낮춘 것이 특징입니다. 특히 Ruby 3.4와의 조합을 통해 이전 버전보다 훨씬 빠른 실행 속도와 효율적인 메모리 관리를 제공하며, 기존 Rails 7.2 사용자들에게 가장 매끄러운 전환 경로를 제시합니다. 중소규모 애플리케이션의 경우 인프라를 최적화할 수 있는 최적의 기회입니다.

1. Ruby 3.4 업그레이드 및 YJIT 활성화

Rails 8은 최소 Ruby 3.1.0 이상을 요구하지만, 최상의 성능을 위해 최신 안정 버전인 Ruby 3.4 사용을 강력히 권장합니다.

  • Ruby 3.4의 주요 이점:
    • it을 기본 블록 파라미터로 사용하는 간결한 구문 지원
    • Prism 파서 개선을 통한 파싱 속도 향상
    • YJIT 최적화로 Ruby 3.2 대비 15~20%, Ruby 2.7 대비 30~40% 성능 향상
  • YJIT 활성화: config/boot.rb 파일에 ENV['RUBY_YJIT_ENABLE'] = '1'을 추가하여 런타임 성능을 극대화해야 합니다.

2. Rails 8 설정 및 Gemfile 업데이트

기존 Rails 7.2 환경에서 Gemfile의 Rails 버전을 ~> 8.0.0으로 수정하고 bundle update rails를 실행합니다. 이후 rails app:update 명령을 통해 설정 파일을 갱신해야 합니다.

  • 주요 변경 사항:
    • config/initializers/new_framework_defaults_8_0.rb 파일 검토
    • ActiveStorage의 blob.open 메서드가 블록 없이도 파일 객체를 반환하도록 변경

3. Redis를 대체하는 Solid Gems 도입

Rails 8의 가장 큰 변화는 데이터베이스를 활용해 Redis의 역할을 대체하는 Solid 시리즈의 도입입니다.

  • Solid Queue: 백그라운드 작업을 DB 기반으로 관리합니다. 초당 1,000개 미만의 작업을 처리하는 환경에 적합하며 인프라를 단순화합니다.
  • Solid Cache: Redis 대신 DB를 캐시 저장소로 사용합니다. 자동 정리(cleanup) 기능을 지원하며 별도의 캐시 서버 운영 부담을 줄여줍니다.
  • Solid Cable: WebSocket 통신을 Redis 없이 구현할 수 있게 해줍니다.

4. 내장 인증 시스템 및 PWA 지원

더 이상 단순한 인증 기능을 위해 Devise와 같은 무거운 젬에 의존할 필요가 없습니다.

  • Authentication Generator: rails generate authentication 명령으로 User 모델, 세션 컨트롤러, 비밀번호 재설정 기능을 즉시 생성합니다.
  • PWA(Progressive Web App): rails generate pwa를 통해 매니페스트 파일과 서비스 워커 설정을 자동으로 구성하여 웹 앱을 앱처럼 설치 가능하게 만듭니다.

5. Kamal 2를 이용한 현대적 배포

Rails 8은 Kamal 2를 기본 배포 도구로 포함합니다. Docker를 기반으로 하며 별도의 PaaS 서비스 없이도 제로 다운타임 배포를 가능하게 합니다. kamal init으로 설정을 시작하고 kamal deploy를 통해 서버에 즉시 배포할 수 있습니다.

결론

Rails 8로의 업그레이드는 단순한 기능 추가를 넘어 애플리케이션의 아키텍처를 현대화하고 운영 효율성을 극대화하는 과정입니다. Solid 젬들을 통한 인프라 단순화와 Ruby 3.4의 성능 향상은 개발자와 운영자 모두에게 큰 이점을 제공합니다. 처음에는 기존의 Redis나 Devise를 유지하는 보수적인 전략으로 시작하되, 점진적으로 Rails 8의 새로운 표준 기능들을 도입함으로써 더 간결하고 강력한 시스템을 구축할 수 있습니다. 이번 가이드를 통해 안정적이고 성능 지향적인 업그레이드를 완수하시기 바랍니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

0/1000
정중하고 건설적인 댓글을 작성해 주세요.