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 개발자들이 더욱 쉽게 실시간 기능을 구축하고 유지할 수 있게 해주는 강력한 도구임을 보여주었습니다.