SF Ruby 밋업: GitHub의 UI 아키텍처, Rails 기반 금융 플랫폼 구축, 그리고 실시간 웹 애플리케이션 개발

SF Bay Area Ruby Meetup GitHub, February 11, 2025 livestream

작성자
Ruby on Rails 소식지
발행일
2025년 02월 13일

핵심 요약

  • 1 GitHub은 Rails 모놀리스를 기반으로 UI 아키텍처를 발전시키며, '네이티브가 새로운 기준'이라는 인식 하에 React를 도입하고 프런트엔드 복잡성 관리의 중요성을 강조합니다.
  • 2 Hack Club은 Ruby on Rails를 활용하여 복잡한 금융 서비스 플랫폼(HCB)을 구축하고, 거래 엔진, 신용카드 처리, 다양한 금융 기능을 구현하며 Rails의 유연성과 강력함을 입증합니다.
  • 3 AnyCable은 Action Cable의 한계를 극복하는 고성능 실시간 서버로, 정교한 사용자 '프레즌스' 관리 및 Hotwire와의 통합을 통해 Rails 앱의 실시간 기능을 강화합니다.

도입

본 보고서는 최근 개최된 SF Ruby 밋업에서 발표된 세 가지 주요 세션의 내용을 요약 및 정리한 것입니다. 첫 번째 세션에서는 GitHub의 UI 아키텍처 진화와 프런트엔드 개발의 복잡성에 대한 통찰이 공유되었고, 두 번째 세션에서는 Ruby on Rails를 기반으로 한 금융 서비스 플랫폼 구축 사례가 소개되었습니다. 마지막 세션에서는 Rails 애플리케이션을 위한 실시간 기능, 특히 사용자 프레즌스(Presence) 관리의 도전과 AnyCable을 통한 해결 방안이 다루어졌습니다. 이 세션들은 Ruby on Rails가 대규모 시스템, 복잡한 비즈니스 로직, 그리고 현대적인 사용자 경험을 구현하는 데 있어 여전히 강력하고 유연한 프레임워크임을 보여줍니다.

GitHub의 UI 아키텍처 및 프런트엔드 개발 (Joel)

GitHub의 Joel은 GitHub의 UI 아키텍처가 여러 시대를 거쳐 발전해왔으며, 현재 ‘네이티브가 새로운 기준’이 되고 있다고 설명했습니다. 이는 모바일 앱 경험이 사용자 기대치를 높여 웹 애플리케이션도 유사한 수준의 반응성과 완성도를 요구하게 되었음을 의미합니다. GitHub은 Rails 모놀리스를 기반으로 운영되지만, 프로젝트와 같이 앱과 같은 경험이 필요한 새로운 기능에는 React를 도입하고 있습니다. Joel은 UI 개발에서 ‘추상화의 역설(UI abstraction paradox)’을 경고하며, 자체 디자인 시스템을 구축하고 유지하는 데 드는 막대한 비용을 지적했습니다. GitHub과 같이 대규모 조직조차 모든 UI 컴포넌트를 직접 만들지 않으며, 기존의 오픈 소스 디자인 시스템 재사용을 고려한다고 언급했습니다. 또한, 프런트엔드 코드의 복잡성이 백엔드 코드보다 10배 더 많은 비용을 초래할 수 있으므로 UI 복잡성을 예산처럼 관리하고 불필요한 재발명을 피해야 한다고 강조했습니다. view_component와 같은 Rails 친화적인 UI 컴포넌트 프레임워크의 중요성도 언급되었습니다.

Rails 기반 금융 서비스 플랫폼 구축 (Sam)

Hack Club의 Sam은 고등학생 해커톤 주최자들을 위한 재정 후원 프로그램인 HCB(Hack Club Bank)를 Ruby on Rails로 구축한 사례를 발표했습니다. HCB는 Column, SVB, Stripe와 같은 외부 금융 API를 통합하여 재정 관리를 위한 올인원 플랫폼을 제공합니다. 특히, 여러 프로젝트가 하나의 법인 계좌를 공유하기 때문에 은행 명세서의 거래 내역을 각 프로젝트에 정확하게 매핑하는 ‘거래 엔진’의 중요성을 설명했습니다. 신용카드 사용 시 발생하는 ‘보류 중인 거래(pending transactions)’ 및 ‘음수 잔고(negative balances)’와 같은 복잡한 문제들을 해결하기 위한 시스템 설계와 ‘과도한 캡처(over-capture)’, ‘다중 캡처(multi-capture)’, ‘강제 캡처(force capture)’와 같은 금융 거래의 특이점들을 공유했습니다. HCB는 이러한 인프라를 기반으로 영수증 처리, 현금 인출, 국제 송금, PayPal 이체, 기부 및 인보이싱 등 다양한 금융 기능을 Rails로 구현했습니다. Sam은 Action Mailbox를 활용한 이메일 기반 영수증 처리, Turbo Streams를 통한 실시간 업데이트, Public Activity 젬을 활용한 활동 로그 구현 등 Rails의 강력한 기능들을 실제 서비스에 적용한 경험을 공유하며, Hack Club의 금융 서비스를 오픈 소스화하려는 계획도 밝혔습니다.

Rails 실시간 웹 애플리케이션 및 AnyCable (Vladimir)

Evil Martians의 Vladimir는 실시간 웹 애플리케이션 개발의 핵심인 ‘프레즌스(Presence) 문제’를 다루었습니다. 그는 Action Cable의 기본 구현이 연결 끊김 감지 지연(최대 15분) 및 서버 크래시 시 상태 불일치와 같은 한계를 가지고 있음을 지적했습니다. 이러한 문제를 해결하기 위해 많은 개발자들이 애플리케이션 수준의 하트비트(Heartbeat) 및 세션 관리 로직을 직접 구현해야 한다고 설명했습니다. Vladimir는 Evil Martians가 개발한 AnyCable을 대안으로 제시했습니다. AnyCable은 Go 언어로 작성된 고성능 실시간 서버로, Action Cable의 프록시 역할을 하며 하트비트, 연결 만료 처리 등 낮은 수준의 복잡성을 자동으로 관리하여 개발자가 프레즌스 구현에 집중할 수 있도록 돕습니다. AnyCable은 join_presence와 같은 새로운 API를 제공하여 사용자 온라인 상태 추적을 간소화하며, Hotwire(Turbo)와의 통합을 통해 JavaScript 코드 없이도 HTML만으로 실시간 UI 업데이트가 가능하도록 지원합니다. 이는 Rails 개발자들이 더욱 쉽게 실시간 기능을 구축하고 유지할 수 있게 해주는 강력한 도구임을 보여주었습니다.

결론

이번 SF Ruby 밋업은 Ruby on Rails가 단순한 웹 프레임워크를 넘어, 대규모 트래픽을 처리하는 GitHub의 핵심 인프라, 복잡하고 규제가 엄격한 금융 서비스 플랫폼, 그리고 고성능 실시간 웹 애플리케이션에 이르기까지 광범위한 영역에서 성공적으로 활용될 수 있음을 명확히 보여주었습니다. 특히, 프런트엔드 아키텍처의 진화와 그에 따른 도전, 그리고 실시간 기능 구현의 복잡성을 해결하기 위한 커뮤니티의 지속적인 노력과 혁신은 Ruby 생태계의 활력과 발전 가능성을 재확인시켜 주었습니다. 개발자들은 Rails의 강력한 기능을 활용하면서도, 변화하는 기술 환경과 사용자 기대치에 맞춰 효율적인 아키텍처 설계와 외부 도구의 적절한 활용이 중요함을 배울 수 있었습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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