루비 생태계는 애플리케이션에 필요한 거의 모든 기능에 대한 Gem이 존재할 정도로 강력하지만, 너무 많은 선택지는 오히려 올바른 Gem을 선택하기 어렵게 만들고 초기 설정의 어려움을 가중시킵니다. 이러한 문제를 해결하기 위해 발표자는 JavaScript 생태계의 접근 방식을 분석합니다.
JavaScript 생태계의 혁신
-
StackBlitz: 브라우저에서 풀 스택 애플리케이션 환경을 실행할 수 있는 온라인 IDE입니다. NPM 패키지 설치부터 개발 서버 실행까지 모든 개발 환경 작업이 브라우저 내에서 이루어집니다.
-
Web Containers: StackBlitz 기술의 핵심으로, Node.js 런타임을 WebAssembly로 컴파일하여 브라우저 내에서 가상 운영 체제처럼 작동하게 합니다. 이를 통해 사용자의 로컬 머신이 개발 설정의 대부분을 처리하여 클라우드 서버 부담을 줄입니다.
-
Tutorial Kit: Web Containers 기술을 기반으로 구축된 인터랙티브 튜토리얼 프레임워크로, 사용자가 코드를 편집하고 실행하며 결과를 즉시 확인할 수 있는 학습 경험을 제공합니다.
Ruby 생태계로의 확장: Rails on Web Containers
WebAssembly가 Ruby도 실행할 수 있다는 점에 착안하여, 발표자 팀은 StackBlitz의 Web Containers 아키텍처에 Ruby 런타임을 통합하는 도전을 시작했습니다. 이 과정은 다음과 같은 단계를 거쳐 발전했습니다.
-
run_ruby.dev: 브라우저에서 Ruby 코드를 실행하고 Gem을 설치하며 Ruby 웹 서버를 구동할 수 있는 온라인 Playground. JavaScript와 Ruby 간의 공유 파일 시스템 구현이 핵심 기술이었습니다.
-
Wasmifi Rails Gem: 전체 Rails 애플리케이션을 WebAssembly 모듈로 패키징하여 브라우저에서 Rails 서버를 실행할 수 있게 한 Gem입니다.
-
인터랙티브 Rails 시작 가이드: 공식 Rails 시작 가이드를 재구축하여 거의 모든 레슨을 인터랙티브하게 만들었습니다. 개발 환경 지원(제너레이터, 마이그레이션, 콘솔, 서버 라이브 리로드)이 추가되었으며, Tutorial Kit을 활용하여 UI를 구성했습니다. 이 결과물이 바로 Rails on Web Containers입니다.
데모: Action Policy Gem 튜토리얼
발표자는 CLI 명령어를 통해 새로운 튜토리얼 프로젝트를 생성하고, Gemfile에 action_policy Gem을 추가하는 과정을 시연했습니다. Ruby Wasm 명령어로 WebAssembly 모듈을 빌드한 후, 개발 서버를 실행하여 터미널, 코드 에디터, 애플리케이션 미리보기 등의 인터랙티브 요소를 갖춘 튜토리얼 환경을 보여주었습니다. 특히, Rails 콘솔에서 action_policy Gem이 정상적으로 로드되고 작동하는 것을 확인하며, 사용자가 아무것도 설치할 필요 없이 로컬 머신과 동일한 학습 경험을 얻을 수 있음을 강조했습니다.