Jean Busousier는 Ruby 언어 자체에 대한 깊은 만족감을 표현하며, Ruby의 간결함과 Rails(특히 Active Record, Active Support, Action Controller)의 직관적인 접근 방식이 개발 생산성을 높인다고 설명합니다. 과거 PHP와 Django 경험을 바탕으로 Rails에 정착하게 된 그는, Rails가 개발자에게 불필요한 반복 작업을 줄여주고 핵심 비즈니스 로직에 집중할 수 있게 해주는 ‘Don’t Repeat Yourself’ 철학을 잘 구현하고 있다고 말합니다.
Shopify에서 그는 Rails 인프라 팀에 소속되어 프레임워크의 성능 최적화, 최신화 유지, 버그 해결, 그리고 개발자 생산성 향상을 위한 자동화 도구 개발(예: 수백 개의 앱에 대한 Rails 업그레이드 자동화)에 주력합니다. Shopify는 Rails Edge 버전을 사용하여 최신 수정 사항을 즉시 적용하는 유연성을 확보하고 있으며, Busousier는 수많은 Ruby 젬에 기여하며 생태계 안정화에 중요한 역할을 하고 있습니다. 그는 젬 의존성을 마치 자신의 코드베이스의 일부처럼 다루고, 문제가 발생했을 때 직접 소스 코드를 열어보고 수정하는 것을 주저하지 말아야 한다고 강조합니다. 이는 개발자의 성장에 매우 중요하며, 대부분의 젬은 생각보다 복잡하지 않다고 덧붙입니다.
가장 중요한 논의 중 하나는 Shopify가 Puma 대신 Unicorn 기반의 Pitchfork를 사용하는 이유입니다. Busousier는 많은 Rails 애플리케이션이 흔히 생각하는 것과 달리 IO-바운드(IO 작업에 많은 시간을 소모)가 아닌 CPU-바운드(Ruby 코드 실행에 많은 시간을 소모)일 수 있다고 지적합니다. Shopify의 경우, 요청 처리 시간의 60-70%가 Ruby 코드 실행에, 30%가 IO 작업에 소요됩니다. Ruby의 GVL은 한 번에 하나의 스레드만 Ruby 코드를 실행할 수 있도록 제한하므로, CPU-바운드 애플리케이션에서 Puma와 같은 다중 스레드 서버를 사용하면 GVL 경합으로 인해 오히려 요청 지연 시간(latency)이 증가할 수 있습니다. 반면 Unicorn/Pitchfork는 다중 프로세스를 활용하고 fork
시스템 콜의 Copy-on-Write(쓰기 시 복사) 메커니즘을 통해 메모리 사용량을 효율적으로 관리합니다. 이는 처리량(throughput)을 높이는 동시에 지연 시간을 최적화하는 Shopify의 전략입니다.
그는 성능 측정 시 지연 시간과 처리량의 차이를 명확히 이해하는 것이 중요하다고 강조하며, ‘빠르다’는 것이 항상 동일한 의미는 아니라고 설명합니다. 또한, GVL 경합을 측정하기 위한 Shopify/GVL_tools
와 같은 도구의 중요성을 언급합니다. 애플리케이션 최적화 측면에서는, 외부 서비스 호출과 같은 잠재적으로 느리거나 실패할 수 있는 작업을 백그라운드 작업으로 오프로드하는 것을 강력히 권장합니다. 마지막으로, 그는 Rails의 ‘마법’이라는 표현에 대해 비판적인 시각을 드러내며, 개발자들이 프레임워크의 소스 코드를 직접 탐색하고 이해함으로써 시스템에 대한 깊은 통찰력을 얻을 수 있다고 조언합니다. 오픈 소스 기여는 자신의 실제 필요를 해결하는 ‘가려운 곳을 긁는’ 방식으로 이루어져야 한다고 역설합니다.