아이린 유셀(Eileen Usell)은 Shopify의 시니어 스태프 소프트웨어 엔지니어이자 Rails 핵심 팀원으로서, 대규모 Ruby on Rails 애플리케이션이 직면하는 도전과 모듈화 모놀리식 아키텍처에 대한 통념을 다룹니다. 그녀는 수년간 Basecamp Classic, Shopify, GitHub 등 초기 Rails 애플리케이션에서 얻은 경험을 바탕으로, 많은 이들이 기술적 문제로 오해하는 복잡성이 실제로는 조직 문화와 인간 행동에서 비롯된다고 주장합니다. 본 강연은 대규모 Rails 애플리케이션에서 발생하는 문제점들을 분석하고, 모듈화가 왜 근본적인 해결책이 될 수 없는지 설명하며, 궁극적으로 이러한 문제들을 해결하기 위한 문화적 접근 방식을 제시합니다.
대규모 Rails 애플리케이션은 시간이 지남에 따라 코드의 조직성 부족, 높은 결합도, 느리고 불안정한 CI(지속적 통합), 신규 개발자 온보딩의 어려움 등으로 인해 개발자에게 ‘진흙탕’처럼 느껴지기 시작합니다. 이러한 문제에 직면한 기업들은 종종 마이크로서비스나 모듈화된 모놀리식 아키텍처로의 전환을 모색하며, Shopify, GitHub를 포함한 많은 기업들이 Rails Engines와 Packwerk와 같은 도구를 활용하여 모놀리식 애플리케이션을 모듈화하려 시도했습니다. 이론적으로 모듈화된 모놀리식은 마이크로서비스의 경계 분리 이점과 모놀리식의 쉬운 배포 및 개발 이점을 결합한 최적의 해결책으로 여겨졌습니다.
그러나 유셀은 모듈화가 예상했던 ‘은총알’이 아니었음을 지적하며, 오히려 새로운 문제들을 야기한다고 강조합니다. 예를 들어, 의존성 위반을 피하기 위해 ActiveRecord 객체 대신 ID를 전달하는 ‘원시적 집착(Primitive Obsession)’은 비효율적인 쿼리와 데이터 중복을 초래합니다. 각 팀이 자신들의 패키지 코드에만 집착하고 다른 팀의 코드 수정을 꺼리는 ‘소유권 집착(Ownership Obsession)’은 협업을 저해하고 사일로를 만듭니다. 모든 개념을 새로운 패키지로 만들려는 ‘패키지 집착(Package Obsession)’은 코드베이스를 조직도에 따라 파편화시키며, 의존성 위반을 피하기 위한 코드 복제는 유지보수성을 떨어뜨리고 기술 부채를 증가시킵니다. 순환 의존성 해결의 어려움 또한 모듈화의 한계로 지적됩니다.
유셀은 이러한 문제들이 본질적으로 기술적인 것이 아니라 인간적, 문화적 문제라고 역설합니다. 아키텍처 변경만으로는 코드의 구조 개선, 결합도 감소, CI 속도 향상, 테스트 안정화, 온보딩 용이성 확보, 코드 오너십 명확화 등 근본적인 문제들을 해결할 수 없습니다. 대신, 이러한 문제들은 기술 부채를 무시하고, 빠른 출시 압박에 시달리며, 코드 품질보다 기능 개발을 우선시하고, 개발자 교육과 훈련에 소홀하며, 책임 추궁 위주의 비난 기반 문화가 형성될 때 발생합니다. 즉, 조직의 리더십과 문화가 코드 품질, 기술 부채 해결, 그리고 개발자들의 성장과 협업을 충분히 가치 있게 여기지 않는다면, 어떤 아키텍처를 선택하든 결국 유사한 문제에 직면하게 될 것이라는 메시지입니다.
결론적으로, 유셀은 대규모 Rails 애플리케이션의 '진흙탕' 현상은 피할 수 없는 운명이 아니며, 아키텍처 변경만으로는 해결할 수 없는 인간적, 문화적 문제에서 비롯된다고 주장합니다. 이러한 문제들을 해결하기 위해서는 개발자 교육을 강화하고(Rails 방식 및 소프트웨어 디자인 교육), Rails에 대한 긍정적인 인식을 심어주는 '교화(Indoctrination)'가 필요하며, 리더십이 코드 품질 개선, 기술 부채 해결, 유지보수 작업에 대한 가치를 인정하고 보상해야 한다고 강조합니다. 또한, 비난 기반의 문화 대신 협업을 장려하고, 실패를 두려워하지 않는 건강한 엔지니어링 문화를 구축하는 것이 중요합니다. 모듈화를 추진한다면, 최소한의 패키지로 시작하고, 기능적 격리에 초점을 맞추며, 기술 부채를 먼저 해결한 후 진행하는 것이 바람직합니다. 궁극적으로, Rails 개발의 즐거움을 되찾고 대규모 애플리케이션의 성공을 위해서는 기술적 해결책에만 의존하는 것이 아니라, 조직의 엔지니어링 문화를 개선하고 인적 요소에 투자해야 한다는 것이 이 강연의 핵심 메시지입니다.