Rails 8, 구관이 명관? 개발 생산성 다시 한번!
Rails 8을 사용한 사이드 프로젝트 경험을 통해 개발 생산성(Development Productivity)과 즐거움(Enjoyment)을 재발견함
Rails 8은 Hotwire(HTML Over The Wire), Solid Cache/Queue/Cable 등 새로운 기능으로 개발 편의성을 제공함
Rails 8은 SQLite를 기본 데이터베이스로 채택하여 설정 및 배포를 간소화하고, Kamal을 통한 컨테이너 기반 배포를 지원함
커뮤니티에서는 Ruby와 Rails의 인기 하락에 대한 우려와 함께, Rails의 지속적인 발전(Continuous Improvement)에 주목함
Rails 8의 프런트엔드(Frontend) 개발 경험
Rails 8은 Webpack과 같은 복잡한 JavaScript 번들러(JavaScript Bundler) 없이도 Hotwire의 Stimulus와 Turbo를 통해 SPA(Single Page Application)와 유사한 사용자 경험을 제공한다. 특히, Stimulus를 사용하여 필요한 부분에만 JavaScript를 추가함으로써 개발 생산성을 높였다. 또한, importmap을 통해 JavaScript 컴포넌트를 쉽게 관리할 수 있도록 지원하여 프런트엔드 개발의 진입 장벽을 낮췄다.
Solid Cache, Queue, Cable을 통한 백엔드(Backend) 개선
Rails 8은 Solid Cache, Solid Queue, Solid Cable 라이브러리를 통해 백엔드 인프라 구축을 간소화했다. Solid Cache는 데이터베이스를 캐시로 활용하여 Redis와 같은 별도의 캐싱 시스템 없이도 효율적인 캐싱을 구현한다. Solid Queue는 Redis 없이 데이터베이스를 사용하여 백그라운드 작업을 처리하며, Solid Cable은 데이터베이스를 기본 어댑터로 사용하여 웹소켓 기능을 제공한다. 이러한 기능들은 개발자가 별도의 인프라 구성 없이 Rails 내에서 모든 기능을 사용할 수 있도록 돕는다.
SQLite의 부활과 개발 환경 최적화
Rails 8은 SQLite를 기본 데이터베이스로 채택하여 개발 환경을 단순화했다. 이전 버전에서는 SQLite의 성능을 위해 수동으로 설정을 조정해야 했지만, Rails 8에서는 기본적으로 WAL(Write-Ahead Logging) 모드와 적절한 설정을 제공하여 별도의 튜닝 없이도 프로덕션 환경에서 사용할 수 있도록 개선되었다. 이러한 변화는 개발자가 데이터베이스 관리 부담을 줄이고, 개발에 집중할 수 있도록 돕는다.
Kamal을 활용한 컨테이너 기반 배포
Rails 8은 Kamal을 통해 컨테이너 기반 배포를 지원하여 배포 과정을 간소화했다. Kamal은 컨테이너를 빌드하고, 레지스트리에 푸시한 후, 서버에 배포하는 과정을 자동화한다. 또한, kamal-proxy를 통해 무중단 배포를 지원하며, SSL 인증서 관리도 간편하게 처리할 수 있다. 이러한 기능들은 개발자가 인프라 관리 부담을 줄이고, 배포 자동화를 통해 개발 생산성을 향상시키는 데 기여한다.