SF 루비 밋업: GitHub UI 아키텍처, Ruby on Rails를 활용한 금융 시스템 구축, 그리고 헥사고날 아키텍처

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

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

핵심 요약

  • 1 GitHub은 사용자 경험 향상을 위해 UI 아키텍처를 React 기반으로 전환하고 있으며, 프론트엔드 개발의 복잡성과 비용 상승에 주목하고 있습니다.
  • 2 Hack Club Bank는 Ruby on Rails를 사용하여 고등학교 해커톤 및 비영리 단체를 위한 금융 플랫폼을 구축하며, 실제 금융 시스템의 복잡성을 Rails로 해결하고 있습니다.
  • 3 헥사고날 아키텍처는 포트와 어댑터를 통해 애플리케이션의 비즈니스 로직을 외부 환경으로부터 분리하여 테스트 용이성, 유지보수성, 확장성을 높이는 데 기여합니다.

도입

본 SF 루비 밋업에서는 웹 개발의 최전선에서 활약하는 세 명의 연사가 Ruby on Rails를 중심으로 한 다양한 아키텍처 및 실제 적용 사례를 공유했습니다. GitHub의 UI 아키텍처 변화와 프론트엔드 개발의 도전 과제, Hack Club Bank가 Ruby on Rails로 금융 서비스를 구축한 과정, 그리고 대규모 Rails 애플리케이션의 유지보수성을 높이는 헥사고날 아키텍처 적용 방안에 대한 심도 깊은 논의가 이루어졌습니다. 이 발표들은 Ruby on Rails가 단순한 웹 프레임워크를 넘어 복잡한 시스템 구축에도 강력한 도구임을 입증하며, 개발자들이 직면하는 현실적인 문제들에 대한 통찰력을 제공합니다.

첫 번째 발표는 GitHub의 UI 아키텍처에 대한 Joel Haxley의 이야기였습니다. 그는 GitHub의 UI가 여러 시대를 거쳐 발전해왔으며, 특히 접근성과 가용성에 대한 표준이 높아지면서 UI 구축의 복잡성이 증대되었다고 설명했습니다. GitHub은 99.9%의 가용성 표준을 목표로 하며, 이는 UI 버그를 백엔드 버그와 동일하게 심각하게 간주함을 의미합니다. 이러한 요구사항과 앱과 같은 사용자 경험에 대한 기대치 증가로 인해 GitHub은 새로운 경험을 구축할 때 React를 적극적으로 도입하고 있습니다. Joel은 “UI 추상화의 역설(UI abstraction paradox)”을 언급하며, 디자인 시스템이 널리 채택될수록 변경하기 어려워지는 현상과 “프론트엔드 비용이 백엔드의 10배(front-end costs 10x backend)”라는 원칙을 강조하며, 불필요한 UI 복잡성을 줄이고 기존 디자인 시스템을 재사용하는 것이 중요하다고 역설했습니다. 궁극적으로 웹은 네이티브 앱 경험을 새로운 기준으로 삼아야 한다는 점을 시사했습니다.

두 번째 발표는 Sam이 Hack Club Bank (HCB)를 Ruby on Rails로 구축한 경험에 대한 내용이었습니다. HCB는 고등학생 및 비영리 단체를 위한 재정 후원 프로그램으로, 복잡한 금융 거래를 관리하는 플랫폼입니다. Sam은 Column, SVB, Stripe와 같은 다양한 금융 API와의 통합 과정을 상세히 설명했습니다. 특히 거래 내역을 데이터베이스 레코드로 변환하고, 단일 은행 계좌를 여러 프로젝트에 매핑하는 과정에서 발생하는 어려움(예: 프로젝트 간 자금 이체 시 은행 명세서 기록 부재 문제)을 해결하기 위한 독창적인 방법들을 소개했습니다. 신용카드 승인(authorization)과 최종 결제(settlement) 간의 시간차로 인해 발생하는 미결 거래(pending transactions) 및 마이너스 잔액 문제(over capture, multi capture, force capture)는 금융 시스템 개발의 실제적인 난관을 보여주었습니다. 또한, Action Mailbox를 활용한 영수증 처리, Turbo Streams를 이용한 실시간 댓글 및 무한 스크롤 구현 등 Ruby on Rails의 기능을 효과적으로 활용하여 사용자 경험을 개선한 사례를 공유하며, Rails가 복잡한 금융 도메인에서도 강력한 솔루션임을 입증했습니다.

마지막으로 Alan은 헥사고날 아키텍처(Ports and Adapters)에 대해 설명했습니다. 이 패턴은 애플리케이션의 핵심 비즈니스 로직을 외부 환경(데이터베이스, 웹 프레임워크, 외부 서비스 등)으로부터 분리하는 것을 목표로 합니다. 포트(Port)는 애플리케이션이 외부 세계와 상호작용하는 인터페이스(API 또는 SPI)를 정의하고, 어댑터(Adapter)는 특정 기술 스택이나 외부 서비스의 인터페이스를 애플리케이션의 포트와 일치하도록 변환하는 역할을 합니다. Alan은 간단한 커피 머신 예시를 통해 코드를 리팩토링하여 하드웨어 변경 시 애플리케이션 코드를 수정할 필요 없이 어댑터만 교체하면 되도록 만드는 과정을 시연했습니다. 그는 Rails 애플리케이션에서 헥사고날 아키텍처를 적용하는 핵심은 비즈니스 로직을 순수 Ruby 객체(POJO)로 작성하고, Rails를 웹 입력 및 데이터베이스 출력을 처리하는 어댑터로 간주하는 것이라고 강조했습니다. 이를 통해 코드를 테스트하기 쉽고, 유지보수하기 쉬우며, 확장하기 용이하게 만들 수 있다고 설명하며, 대규모 Rails 모놀리스의 유지보수성 향상에 기여할 수 있음을 역설했습니다.

결론

이번 밋업은 Ruby on Rails가 현대 웹 개발의 다양한 도전 과제에 어떻게 대응하고 있는지 잘 보여주었습니다. GitHub의 사례는 대규모 애플리케이션에서 UI/UX 요구사항이 복잡해짐에 따라 프론트엔드 기술 스택의 변화와 아키텍처적 고민이 필수적임을 시사합니다. Hack Club Bank의 사례는 Rails가 단순한 웹사이트를 넘어 정교하고 복잡한 금융 시스템을 구축하는 데 충분히 강력하고 유연한 프레임워크임을 실증했습니다. 또한 헥사고날 아키텍처는 Rails 개발자들이 애플리케이션의 핵심 가치를 보호하고 변화에 유연하게 대응할 수 있도록 돕는 중요한 설계 원칙임을 강조했습니다. 전반적으로, Ruby on Rails 커뮤니티는 기술적 깊이와 실용적인 해결책을 탐구하며 지속적으로 발전하고 있음을 확인할 수 있었습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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