18년간 Ruby on Rails 모놀리스 애플리케이션을 운영하며 얻은 교훈과 전략

RailsConf 2025 Keeping the Rails Magic Alive After 18 Years by Wade Winningham

작성자
Ruby Central
발행일
2025년 07월 24일

핵심 요약

  • 1 Power Home Remodeling은 18년간 Ruby on Rails 기반의 대규모 애플리케이션 'Nitro'를 성공적으로 운영하며 성장시켰습니다.
  • 2 이들은 'Build vs. Buy' 정책을 통해 핵심 시스템을 자체 개발하여 데이터 통제권과 비즈니스 요구사항에 대한 유연성을 확보했습니다.
  • 3 모놀리스의 복잡성을 해결하기 위해 Cobra 및 Packwerk와 같은 모듈화 전략과 자체 개발 도구를 활용하여 빌드 시간을 90% 단축하고 개발 효율성을 극대화했습니다.

도입

본 발표는 Power Home Remodeling의 수석 개발자인 Wade Winningham이 18년간 Ruby on Rails 기반의 핵심 비즈니스 애플리케이션 'Nitro'를 개발하고 운영하며 얻은 심층적인 경험과 전략을 공유합니다. 장기간 대규모 모놀리식 애플리케이션을 관리하며 직면했던 도전 과제, 이를 극복하기 위한 독자적인 접근 방식, 그리고 개발 효율성을 높이기 위해 자체 개발한 오픈 소스 도구들을 상세히 소개합니다. 이는 루비 온 레일즈 생태계에서 복잡하고 거대한 시스템을 성공적으로 유지하고 지속적으로 발전시키는 데 필요한 중요한 통찰을 제공합니다.

Nitro 애플리케이션의 진화와 도전

2007년 Rails 1.23 버전으로 시작된 ‘Nitro’는 현재 3백만 줄 이상의 Ruby 코드를 포함하는 거대한 모놀리스로 성장했습니다. 이 과정에서 수많은 Ruby 및 Rails 업그레이드를 성공적으로 수행하며 비즈니스 요구에 맞춰 지속적으로 기능을 확장했습니다. 그러나 코드베이스가 방대해지면서 CI(Continuous Integration) 빌드 시간이 최대 4.5시간에 달하는 등 심각한 효율성 저하와 코드 구성 문제가 발생했습니다.

‘Build vs. Buy’ 철학의 고수

Power Home Remodeling은 비즈니스에 합리적일 경우 외부 서비스를 구매하기보다 자체적으로 솔루션을 구축하는 ‘Build vs. Buy’ 정책을 고수합니다. 이는 외부 서비스의 예측 불가능한 비용 상승, 데이터 통제 상실, 그리고 비즈니스 프로세스와의 비효율적인 통합 문제를 피하기 위함입니다. 일례로, 기존 채용 관리 서비스가 갑작스럽게 사업을 중단하자, 3명의 개발자가 6개월 만에 Ruby on Rails로 자체 채용 시스템을 구축하여 비즈니스에 더 긴밀하게 통합하고 데이터를 안전하게 관리할 수 있게 되었습니다. 또한, Pivotal Tracker의 서비스 종료 후 프로젝트 관리 도구 ‘Runway’를 자체 개발하여 지적 재산을 보호하고 전사적인 애자일 문화 확산을 지원했습니다.

모놀리스 모듈화 전략: Cobra와 Packwerk

대규모 모놀리스의 문제를 해결하기 위해 모듈화 전략을 채택했습니다. 초기에는 Stefan Hogaman의 ‘Component-Based Rails Applications (Cobra)’ 접근 방식을 활용했으며, 현재는 ‘Packwerk’와 같은 점진적 모듈화의 이점도 인정하고 있습니다. 이 전략을 통해 코드베이스를 컴포넌트 단위로 분리하고, 각 컴포넌트의 독립성을 확보하여 병렬 테스트 실행을 가능하게 했습니다. 그 결과, CI 빌드 시간을 90% 이상 단축하고 개발 생산성을 크게 향상시켰습니다. 이는 비즈니스와 개발 팀의 강력한 의지와 지속적인 노력이 뒷받침되어야 하는 장기적인 여정임을 강조했습니다.

자체 개발 오픈 소스 프로젝트

모듈화 및 개발 효율성 증진을 위해 자체 개발하여 오픈 소스로 공개한 도구들을 소개했습니다: * Cobra Commander: Cobra 애플리케이션을 위한 커맨드 라인 도구로, 컴포넌트 의존성 관리 및 명령 실행 오케스트레이션을 지원하여 대규모 업그레이드 시 유용합니다. * Power Tools: 유용한 Ruby Gem 컬렉션입니다. * Edge Stitch: 거대한 스키마 파일을 컴포넌트별 부분 스키마로 분할하여 병합 충돌을 줄이고 스키마 관리를 용이하게 합니다. Nitro의 1,500개 이상의 테이블을 효율적으로 관리하는 데 기여합니다. * Consent: CanCan 기반의 동적 권한 시스템 Gem으로, 복잡한 권한 설정을 데이터베이스에 영속화하고 유연하게 관리할 수 있게 합니다. * Design System Playbook: Tailwind CSS에 기반하지 않은 Rails용 UI 시스템으로, 개발자들이 UX 패턴을 쉽게 적용하고 React, Swift와도 연동 가능하게 합니다. 이는 개발자들이 UI/UX에 대한 고민 없이 핵심 비즈니스 로직에 집중할 수 있도록 돕습니다.

결론

Power Home Remodeling의 사례는 Ruby on Rails 모놀리스를 장기간 성공적으로 운영하고 발전시키는 모범적인 전략을 제시합니다. 'Build vs. Buy' 철학을 통해 비즈니스 핵심 역량을 내재화하고, 과감한 모듈화와 자체 개발 도구를 통해 기술 부채를 해결하며 개발 생산성을 극대화한 점이 인상적입니다. 이는 단순히 기술적인 성공을 넘어, 비즈니스와 개발 조직 간의 강력한 협력, 그리고 기업 문화를 코드로 구현하려는 꾸준한 노력의 중요성을 강조합니다. 궁극적으로, 이러한 접근 방식은 기업이 자체적인 기술 역량을 강화하고, 변화하는 시장 환경에 유연하게 대응하며, 스스로의 운명을 개척할 수 있게 하는 핵심 동력이 됩니다. 이들의 경험은 대규모 Ruby on Rails 애플리케이션을 운영하는 다른 조직들에게 귀중한 지침이 될 것입니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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