새로운 Ruby 웹 프레임워크 Yippee: 백지 상태에서 구상하는 미래

Yippee: Our vision for modern full-stack Ruby framework

작성자
Ruby Weekly
발행일
2025년 09월 29일

핵심 요약

  • 1 Yippee는 Rails의 개선 및 단순화를 목표로 Stephen Margheim과 Joel Drapper가 백지 상태에서 새로 구축하는 Ruby 웹 애플리케이션 프레임워크입니다.
  • 2 이 프레임워크는 극도의 속도, 멀티코어 활용, SQLite 단독 지원, 수직 확장에 중점을 두며, 모델, 뷰, 컨트롤러, ORM 등 풀 스택 기능을 통합하여 제공합니다.
  • 3 Phlex, Literal, Quickdraw, Plume 등 여러 핵심 컴포넌트들이 이미 개발 중이거나 완성되어 Yippee의 기반을 다지고 있으며, 개발자 경험 최적화를 목표로 합니다.

도입

Stephen Margheim과 Joel Drapper는 기존 Rails 애플리케이션 개발 경험을 바탕으로, 오늘날의 웹 애플리케이션 프레임워크가 어떤 모습이어야 하는지에 대한 질문에서 새로운 Ruby 웹 프레임워크 'Yippee'를 구상하게 되었습니다. Rails의 장점을 인정하면서도 개선 및 단순화할 수 있는 많은 부분을 발견했으며, 소프트웨어 디자인에 대한 공통된 철학을 공유하며 이상적인 프레임워크를 직접 구축하기로 결정했습니다. Yippee는 모델, 뷰, 컨트롤러, 라우팅, ORM, 쿼리 빌더, 데이터베이스 마이그레이션 등 모든 핵심 기능을 포함하는 풀 스택 프레임워크를 목표로 합니다.

Yippee 프레임워크는 “사람들이 Ruby를 배우게 만들 정도로 훌륭한 프레임워크”를 목표로, 각 레이어에 대한 신중한 접근 방식을 취하고 있습니다. 현재 여러 핵심 영역에서 상당한 진전을 이루고 있으며, 주요 개발 컴포넌트들은 다음과 같습니다.

핵심 컴포넌트 현황

  • Phlex: 서버 렌더링 HTML 및 SVG 뷰를 구축하는 혁신적인 방식으로, Yippee의 서버 측 뷰 레이어를 담당합니다.

  • Literal: 런타임 타입 검사를 통해 객체 속성 정의를 위한 인터페이스를 제공하여 버그를 줄입니다.

  • Quickdraw (WIP): 멀티코어 병렬화를 지원하는 초고속 Ruby 테스트 러너로, 수만 개의 테스트를 수 밀리초 만에 실행합니다.

  • Plume (WIP): Ruby로 작성된 SQLite 파서로, 마이그레이션 및 쿼리 빌딩과 관련된 데이터베이스 기능을 구동합니다.

  • Canopy (private): 라우팅 트리 기반 라우터로 컨트롤러 레이어를 담당하며, 이전에는 “Yippee Router”로 불렸습니다.

  • Refract: AST 수준의 Ruby 리라이터로, Phlex 컴파일러를 구축하는 데 사용됩니다.

  • Strict Ivars: 정의되지 않은 인스턴스 변수 참조 시 오류를 발생시켜 Literal과 함께 버그 방지에 기여합니다.

  • Good Cop: 자동 수정에 최적화된 Rubocop 규칙 집합입니다.

Yippee의 핵심 철학 및 목표

  • 높은 레버리지: 소수의 인원으로 유지보수 가능하며, 한 사람이 대규모 앱을 구축 및 배포할 수 있을 만큼 작고 단순합니다.

  • 극도의 속도: 앱 부팅 40ms, 1만 개 테스트 1초, 프로덕션 배포 1초를 목표로 하며, 개발자 작업 흐름의 속도 최적화를 강조합니다.

  • 멀티코어 성능: 개발 및 프로덕션 환경 모두에서 머신의 최대 리소스를 활용하여 최적의 성능을 제공합니다.

  • SQLite 단독 지원: 주 데이터, 캐시, 작업 큐에 SQLite를 사용하며, 앱과 데이터베이스 간의 지연 시간이 없어 N+1 쿼리를 이점으로 활용합니다.

  • 수직 확장: 단일 머신으로도 엄청난 성능을 달성할 수 있음을 강조하며, 단순한 확장 모델을 제시합니다.

  • 최소한의 타입: Literal을 통해 필요한 만큼의 런타임 타입 검사를 제공하여 개발 생산성을 높입니다.

  • 최소 설정: Rails와 달리 생성되는 설정 파일을 최소화하여 업그레이드 및 커스터마이징을 단순화합니다.

  • 라우팅 트리: Roda에서 영감을 받은 라우팅 트리 구조로, 유연하고 빠른 라우팅을 가능하게 합니다.

  • 완전 통합: 모든 컴포넌트가 긴밀하게 통합되어, 예를 들어 뷰 테스트 시 실제 HTML 렌더링 없이도 검증 가능합니다.

  • 풀 스택: 백엔드와 프론트엔드(CSS, TypeScript, Svelte) 모두를 지원하는 통합 개발 경험을 제공합니다.

  • 자동 로딩 및 Bootsnap: Zeitwerk 기반의 자동 로딩과 RubyVM 명령어 배포를 통해 빠른 시작 및 배포 시간을 확보합니다.

  • Svelte 또는 Phlex: SPA(Svelte)와 서버 렌더링(Phlex) 모델을 유연하게 조합하여 다양한 애플리케이션 요구사항을 충족합니다.

  • 하이브리드 작업 러너: 단일 서버 배포에 최적화된 SQLite 기반의 유연한 작업 큐를 제공합니다.

  • 선언적 마이그레이션: 원하는 스키마를 선언하면 프레임워크가 마이그레이션을 자동 생성합니다.

  • 매핑된 데이터베이스 이름: 사용자 친화적인 이름이 데이터베이스의 고정 식별자에 매핑되어 이름 변경을 용이하게 합니다.

  • 신속한 배포: Yippee 앱 생성부터 프로덕션 배포까지 단 몇 분, 이후 배포는 1초를 목표로 합니다.

  • 불변 모델 레이어: 모델을 단순한 불변 객체(Literal::Data)로 분리하여 데이터베이스 레이어와 명확히 구분합니다.

  • 조합 가능한 SQL: 모든 SQL 쿼리를 Ruby 해시로 표현하여 Ruby 해시처럼 조합 가능하게 합니다.

  • 아름다운 Ruby API: Ruby의 메타 프로그래밍 기능을 최대한 활용하여 간결하고 표현력 있는 코드를 작성합니다.

  • 뷰 레이어에서의 SQL 쿼리 허용: SQLite 환경에서 N+1 쿼리가 이점이 되므로, 데이터 페칭을 데이터 사용 위치에 가깝게 배치합니다.

결론

Yippee는 기존 Ruby 웹 프레임워크의 한계를 극복하고, 개발자에게 극도의 속도, 단순성, 효율성을 제공하는 것을 목표로 하는 야심 찬 프로젝트입니다. Phlex, Literal 등 이미 개발된 혁신적인 컴포넌트들을 기반으로, 풀 스택 통합과 SQLite 중심의 아키텍처를 통해 개발 경험을 혁신하려 합니다. 아직 완성까지는 수년이 걸릴 것으로 예상되지만, 이 프레임워크는 Ruby 개발 생태계에 새로운 패러다임을 제시하며, Ruby를 배우게 만들 정도로 매력적인 대안이 될 잠재력을 가지고 있습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!