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를 통해 서버에 즉시 배포할 수 있습니다.