Rails로 웹과 모바일 앱 구축하기: 2024년의 프런트엔드 개발

Hana Harenčárová - Building for web and mobile in 2024

작성자
Friendly rb
발행일
2025년 07월 01일

핵심 요약

  • 1 Rails 애플리케이션을 기반으로 하이브리드 접근 방식을 통해 웹 및 모바일 앱을 효율적으로 구축하고, 단일 코드베이스로 빠른 개발 주기를 달성할 수 있습니다.
  • 2 네이티브 모바일 알림(Firebase Messaging)과 브라우저 푸시 알림(Service Worker, Web Push Gem)을 모두 구현하여 사용자 요구사항을 충족하는 다양한 알림 전략을 소개합니다.
  • 3 Hotwire, Stimulus 등 Rails 생태계의 도구들을 활용하여 대화형 웹 경험을 제공하고, 앱 스토어 배포 및 업데이트 과정을 최적화하는 실용적인 팁을 공유합니다.

도입

본 강연은 GitHub의 Hana가 2024년 웹 및 모바일 프런트엔드 구축에 대한 경험과 통찰을 공유합니다. 강연자는 학교와 학부모 간의 복잡한 커뮤니케이션 문제를 해결하기 위해 Flamingo라는 커스텀 앱을 개발한 배경을 설명합니다. 이 앱은 학부모들이 업무와 개인 생활을 분리하기 위해 모바일 앱 설치를 꺼려 브라우저 알림을 요청하는 등 예기치 않은 요구사항에 직면했습니다. 이러한 배경을 바탕으로 Rails를 활용하여 웹과 모바일 환경 모두에서 효과적인 솔루션을 구축하는 방법을 논의합니다.

Rails 기반 웹 및 모바일 앱 구축 전략

PWA(Progressive Web Application) vs. 하이브리드 앱(Hybrid App)

  • PWA: 단일 Rails 앱으로 모든 기기에서 작동하며, 웹사이트 매니페스트와 서비스 워커를 필요로 합니다. 특별한 번들링 없이 배포가 용이합니다.
  • 하이브리드 앱: 메인 Rails 애플리케이션에 iOS(Swift) 및 Android(Kotlin) 네이티브 래퍼를 추가하는 방식입니다. 세 개의 리포지토리가 필요하지만, 웹, 태블릿, 모바일에서 모두 작동하며 앱 스토어 배포가 가능합니다.

Flamingo 앱의 하이브리드 접근 방식

Flamingo는 초기에는 iOS 및 Android 알림을 목표로 하이브리드 접근 방식을 채택했습니다. 이는 Aush Neatia의 서적을 참고하여 Rails, Kotlin, Swift 세 가지 리포지토리를 관리하며 구현되었습니다.

알림(Notification) 구현의 복잡성

  • 초기 요구사항: iOS 및 Android 푸시 알림.
  • 추가 요구사항: 사용자들이 개인/업무 생활 분리를 위해 모바일 앱 설치를 꺼려하면서 브라우저 알림의 필요성이 대두되었습니다. 이로 인해 PWA의 핵심 요소인 서비스 워커와 매니페스트가 하이브리드 앱에도 적용되었습니다.

알림 구현 기술 스택

  • 인앱(In-app) 및 네이티브 알림: notice Gem과 Firebase Messaging을 사용하여 개별 및 대량 메시지 전송을 처리했습니다. Firebase Messaging은 무료 크로스 플랫폼 메시징 솔루션으로 활용되었습니다.
  • 브라우저 푸시 알림: 웹 푸시 알림을 위해 Service Worker, Push API, Push Server가 필요합니다. web_push Gem을 사용하여 VAPID(Voluntary Application Server Identification) 키를 관리하고, 서버가 클라이언트 브라우저로 푸시 알림을 안전하게 전송하도록 했습니다. 이 모든 로직은 Stimulus 컨트롤러 내에 구현되었습니다.

Hotwire 활용

Rails의 강력한 기능인 Hotwire를 활용하여 동적인 사용자 경험을 제공했습니다.

  • Turbo Frames: 양식 편집 등 특정 영역을 인플레이스(in-place)로 업데이트하는 데 사용됩니다.
  • Turbo Streams: 새로운 메시지를 채팅에 추가하거나 실시간으로 뉴스/채팅 대화를 업데이트하는 데 활용됩니다.

개발 팁

  • 애플리케이션 조기 배포: 앱 스토어 검토에 시간이 소요되므로, 기본적인 내비게이션 구조만 갖춰진 상태에서도 앱을 미리 배포하여 테스트 및 피드백 주기를 단축합니다. Rails 앱 변경 사항은 즉시 반영되므로 업데이트 부담이 적습니다.
  • 브라우저 푸시 서비스 활용: 각 브라우저 제조사에서 제공하는 푸시 서비스를 통해 Firebase 없이도 브라우저 알림을 구현할 수 있습니다. 이는 많은 JavaScript 코드를 필요로 하지만, 비용 효율적입니다.
  • Rails의 빠른 개발 속도: Rails의 장점인 빠른 개발 속도와 짧은 피드백 주기를 활용하여 버그 수정 및 개선 사항을 신속하게 적용할 수 있습니다.

Rails 모바일 개발의 미래

  • PWA 지원 불확실성: Rails 8에서 PWA 지원이 강화될 것이라는 기대가 있었으나, 현재까지는 명확한 진전이 없습니다. Apple의 PWA 지원 정책 또한 불확실성이 존재하여 PWA 채택률이 낮은 원인이 되기도 합니다.
  • Action Notifier: notify Gem과 같은 알림 솔루션의 Rails 내장 기능화에 대한 논의가 있었으나, 현재 활발한 개발은 이루어지지 않고 있습니다.
  • Strada: 아직 사용하지 않았지만, 향후 더 많은 네이티브 기능을 구현할 경우 활용 가능성이 있는 도구로 언급됩니다.

결론

Rails는 웹과 모바일 애플리케이션을 동시에 구축할 수 있는 강력한 도구이며, 약간의 추가 노력과 기존 도구들을 활용하면 사용자에게 더욱 매력적인 경험을 제공할 수 있습니다. PWA 지원의 불확실성에도 불구하고, 하이브리드 앱 접근 방식은 Rails의 단일 비즈니스 로직 유지, 빠른 개발 및 배포, 그리고 네이티브 알림 및 기능 활용이라는 큰 이점을 제공합니다. `notice` Gem, `web_push` Gem, Hotwire, Stimulus 등 현재 사용 가능한 도구들을 통해 개발자들은 효율적으로 모바일 앱을 구축하고 사용자 경험을 향상시킬 수 있습니다. Rails 8의 향후 발전 방향이 명확하지 않더라도, Rails 기반 모바일 개발의 미래는 여전히 밝습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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