Jean Busousier는 Ruby 언어가 가진 간결함과 Rails의 직관적인 특성 덕분에 오랫동안 Ruby 개발에 전념해왔음을 밝힙니다. 그는 Rails가 일부에게는 복잡하게 느껴질 수 있지만, Active Record, Active Support, Action Controller와 같은 핵심 부분은 매우 직관적이라고 설명합니다. Shopify의 Rails 인프라 팀은 제품 개발보다는 프레임워크의 성능 최적화, 최신 버전 유지, 버그 수정, 그리고 개발자 생산성 향상을 위한 다양한 툴링 개발에 집중합니다. 특히, 수백 개의 애플리케이션을 Rails 새 릴리스에 맞춰 업그레이드하는 작업을 자동화하는 툴링은 대규모 조직에서 중요한 역할을 합니다.
그는 RubyGems 호환성에 대한 작업과 Ruby 및 gem의 최신 트렁크 버전에 대한 자동화된 테스트를 통해 수백 개의 gem에 기여한 경험을 공유하며, gem 의존성을 마치 자신의 코드베이스의 일부처럼 다루고 필요할 때 직접 소스 코드를 읽고 수정하는 것의 중요성을 강조합니다. 성능 논의에서 Jean은 latency(지연 시간)와 throughput(처리량)의 차이를 명확히 구분하는 것이 중요하다고 역설합니다. Puma와 Unicorn 서버 비교를 통해, Ruby의 GVL이 CPU-bound 작업에 미치는 영향과 fork 시스템 호출을 통한 copy-on-write 메커니즘이 메모리 사용량을 최적화하는 방식을 설명합니다. Shopify와 같은 CPU-bound 경향이 강한 대규모 애플리케이션에서는 Unicorn 기반의 Pitchfork가 더 나은 latency를 제공할 수 있다고 주장합니다.
그는 대부분의 Rails 앱이 IO-bound라는 일반적인 인식에 반박하며, YJIT과 같은 성능 향상 도구가 Ruby 코드 실행 속도를 높이는 것이 IO 작업 속도를 높이는 것보다 더 큰 영향을 미칠 수 있음을 지적합니다. GVL 대기 시간을 측정하는 GVL tools와 같은 도구를 사용하여 애플리케이션의 실제 병목 현상을 파악하는 것이 중요하다고 강조합니다. 백그라운드 작업의 중요성에 대해서도 언급하는데, 특히 외부 서비스 호출과 같이 지연되거나 실패할 수 있는 작업은 컨트롤러에서 직접 처리하기보다는 백그라운드 작업으로 오프로드해야 한다고 조언합니다. GitHub 상태를 데이터베이스에 미러링하여 실시간으로 데이터를 표시하는 Shipit Engine 사례를 통해 이를 설명합니다. 마지막으로, Rails의 ‘마법’에 대한 오해를 지적하며, 개발자들이 직접 소스 코드를 열어보고 이해하려는 노력을 통해 프레임워크의 작동 방식을 파악할 수 있다고 강조합니다. Rails Core 팀의 일원으로서, 그는 프레임워크의 방향을 설정하고 유지보수하는 데 기여하며, API 디자인 철학에 대한 공유된 이해가 팀의 응집력을 높인다고 설명합니다.