Rails 진화의 핵심 동력
Rails의 미래 버전 구축은 네 가지 주요 동력을 기반으로 합니다. 과거 결정에 대한 성찰, 사용자 및 커뮤니티의 의견 경청, 경쟁자들의 동향 관찰, 그리고 미래 예측입니다. 이 네 가지 요소는 Rails가 지속적으로 관련성을 유지하고 발전하는 데 필수적입니다.
현재 Rails의 문제점 및 개선 방향 (커뮤니티 피드백 기반)
커뮤니티 피드백을 통해 현재 Rails가 직면한 몇 가지 문제점이 제기되었습니다.
1. 콜백(Callbacks)
-
콜백은 강력하지만, 복잡한 코드베이스에서 ‘콜백 지옥(Callback Hell)’을 유발하여 관리가 어렵습니다.
-
이를 측정하고 이해하기 위한 도구인
callback_hell젬이 소개되었으며, 무분별한 사용보다는 합리적인 사용을 권장합니다.
2. Active Record
-
많은 개발자가 Active Record를 강력하지만 책임감이 과도하게 부여되는 요소로 인식합니다.
-
Active Record를 데이터 전송 계층으로만 사용하거나 다른 도메인 모델링 라이브러리를 활용하는 대안이 존재함을 언급합니다.
3. 하위 프레임워크 및 생태계 부족
-
Action Mailbox, Action Text 등 일부 코어 프레임워크 기능이 모든 애플리케이션에 필요하지 않다는 비판이 있습니다.
-
Laravel이 제공하는 공식적인 스타터 킷(starter kits) 및 UI 킷(UI kits)과 같은 강력한 생태계가 Rails에는 부족하며, 이는 신규 사용자 유입에 걸림돌이 됩니다.
4. 프론트엔드 관리의 불안정성
-
Webpacker 도입 이후 Rails의 프론트엔드 관리 방식은 지속적으로 변화하며 일관성이 부족하다는 지적이 있습니다.
-
no build방식의 한계를 지적하고, Laravel과 Phoenix Elixir에서 이미 성공적으로 사용 중인Vite및Vite Rails를 대안으로 제시합니다. -
bun_gem을 통해 Node.js 런타임을 Ruby 젬으로 번들링하여 프론트엔드 빌드 도구의 의존성 문제를 해결할 수 있는 방안을 소개합니다.
Rails의 대상 사용자 및 성장 전략
Rails의 지속 가능한 미래를 위해 두 가지 핵심 사용자 그룹에 집중해야 합니다.
1. 신규 사용자 (Zero 주변)
-
rails new명령은 현대적인 애플리케이션 초기 설정을 충분히 지원하지 못합니다. Laravel의 인터랙티브한new명령과 스타터 킷은 좋은 본보기입니다. -
Rails Bytes와 같은 커뮤니티 주도 템플릿의 인지도를 높이고, 더 나은 제너레이터(generator) 작성 방식을 제공해야 합니다.
-
UI 컴포넌트 라이브러리 부족은 Hotwire 스택의 완성도를 저해하며, 디자이너의 관점에서 구축된 공식 UI 킷의 필요성을 강조합니다.
2. 성장하는 스타트업 (1에서 2로)
-
코드베이스 및 팀 확장성: 서비스 클래스, 도메인 모델링 개념의 도입을 통해 복잡성을 관리하고 코드베이스 유지보수성을 높여야 합니다. 모듈화(engines, packages)에 대한 명확한 가이드라인과 쉬운 설정 방안이 필요합니다.
-
워크플로우/오케스트레이션: Active Job은 단일 단계 처리에 적합하지만, 다단계 백그라운드 작업 관리를 위한 Active Job Continuation과 같은 기능의 잠재력을 활용해야 합니다.
-
성능 확장성: 네이티브 비동기(Async) 지원은 필수적입니다. Action Cable의 스레드 기반 아키텍처 한계를 지적하며,
action_cable_next젬을 통해 비동기 웹소켓 처리를 개선할 수 있음을 강조합니다.
미래 Rails (Rails X)의 예측
Rails X는 다음 세 가지 핵심 요소를 갖춰야 합니다.
1. 개발자 경험(Developer Experience, DX)
-
더 나은 언어 서버(LSP)와 개발자 지원 도구를 통해 즉각적인 피드백과 마찰 없는 코드 탐색을 제공해야 합니다.
-
rubocop-rails,strict_loading_rails와 같은 도구를 기본으로 통합하여 잠재적 문제를 사전에 방지하는 ‘능동적 멘토’ 역할을 수행해야 합니다. -
타입 안전성(Type Safety)은 다른 언어에서 유입되는 개발자들을 위해 중요하며, AI 도구에 필요한 정보 소스를 제공할 수 있습니다.
2. AI 통합
-
Rails는 AI를 적극적으로 수용하여 AI 생성/강화 코드, 공식 Agentic 프레임워크(Laravel Agent와 유사), 코드 및 런타임 인텔리전스를 제공해야 합니다.
-
이를 통해 에이전트의 효율성과 정확성을 높이고 개발 프로세스를 혁신할 수 있습니다.
3. 다양한 프론트엔드 옵션
-
Hotwire는 여전히 유용하지만, 미래를 위한 발전 동력에는 한계가 있습니다.
Inertia.js와 같이 JavaScript를 뷰 레이어로 활용하는 방식이 점차 인기를 얻고 있습니다. -
Reaction View,Live Components와 같은 새로운 네이티브 Rails 뷰 레이어 아이디어도 탐색되어야 합니다. -
Rails는 단일 프론트엔드 솔루션에 집중하기보다 다양한 옵션을 제공하여 개발자들이 선택할 수 있도록 해야 합니다.
4. AI를 활용한 신규 사용자 온보딩 (Wipe Coders)
-
코딩 경험이 없는 ‘Wipe Coders’를 위한 온보딩은 미래 Rails의 핵심입니다.
-
Ruby WASM 및 Rails WASM 실험을 통해 브라우저 내에서 Rails 애플리케이션을 직접 구축하고 배포할 수 있는 환경을 제공하여 진입 장벽을 낮출 수 있습니다.
-
AI를 활용한 코드 생성 및 수정 데모를 통해, 초보자도 쉽게 기능을 구현하고 디자인을 개선할 수 있음을 보여주었습니다.