루비 백그라운드 작업의 과거, 현재, 그리고 미래

RailsConf 2025 The Past, Present and Future of Background Job... to Mike, Rosa, Maciej, and Ben

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

핵심 요약

  • 1 본 패널 토론에서는 Sidekiq, Solid Queue, Karafka, Good Job 등 주요 루비 백그라운드 작업 시스템 개발자들이 모여 각 시스템의 개발 동기, 직면한 도전, 그리고 미래 비전을 공유합니다.
  • 2 참가자들은 Redis 의존성, 마이그레이션 부재, Kafka의 오용, 큐 명명법 등 사용자들이 겪는 일반적인 오해와 개선점을 논의하며, GIL 문제 해결과 Active Job의 발전을 미래 핵심 과제로 꼽았습니다.
  • 3 이들은 모니터링, 복잡한 워크플로우, AI 관련 툴링 등 루비 커뮤니티 내 새로운 라이브러리 개발 기회를 제시하며, 개발자 경험과 상업적 모델의 중요성을 강조했습니다.

도입

본 패널 토론은 루비 및 레일즈 생태계에서 가장 널리 사용되는 백그라운드 작업 시스템인 Sidekiq, Solid Queue, Karafka(및 Shoryuken), Good Job의 핵심 개발자들이 한자리에 모여 각 시스템의 과거, 현재, 그리고 미래를 심층적으로 논의하는 자리입니다. 벤 셸던(Good Job), 마이크 팸(Sidekiq), 로사(Solid Queue), 마시에이(Karafka, Shoryuken)는 각자의 시스템을 소개하고, 개발을 시작하게 된 동기, 운영하며 겪었던 예상치 못한 변화와 도전, 그리고 사용자들이 가장 많이 오해하거나 어려워하는 부분에 대한 통찰을 공유했습니다. 이들은 또한 향후 10년간 각 시스템이 어떻게 발전할지에 대한 비전을 제시하며, 루비 커뮤니티 내에서 백그라운드 작업 시스템과 동등한 중요성을 가질 수 있는 새로운 라이브러리 개발 기회에 대해서도 활발한 의견을 교환했습니다.

각 시스템의 개발 동기는 기존 솔루션의 한계를 극복하고자 하는 필요에서 비롯되었습니다. Sidekiq의 마이크 팸은 Rescue의 단일 스레드 구조로 인한 과도한 메모리 사용 문제를 해결하기 위해 멀티스레딩 기반의 Sidekiq을 개발했습니다. Solid Queue의 로사는 David Heinemeier Hansson(DHH)의 요청으로, 기존 Rescue의 복잡성과 사용자 정의 젬 의존성을 벗어나 ‘즉시 작동하는’ 간소화된 솔루션을 목표로 했습니다. Karafka의 마시에이는 Kafka 드라이버의 낮은 개발 경험을 개선하고자 했으며, Shoryuken은 AWS SQS 플러그인 수용 거부로 인해 Sidekiq을 포크하며 시작되었습니다. Good Job의 벤 셸던은 Heroku의 저렴한 다이노에서 실행 가능하며, 기존 Que 시스템의 복잡성을 피할 수 있는 PostgreSQL 기반의 시스템을 구축하고자 했습니다.

개발 과정에서 예상치 못한 변화와 도전도 있었습니다. 마이크 팸은 루비 젬 기반의 상업적 모델이 커뮤니티에 의해 광범위하게 수용된 것에 놀라움을 표하며, 이는 장기적인 유지보수에 필수적이라고 언급했습니다. 로사는 Solid Queue가 트랜잭션 무결성을 포기해야 했던 점을 가장 큰 변화로 꼽았습니다. 이는 레일즈 코어 팀이 delayed_job 경험으로 인해 트랜잭션 내 큐잉에 강한 거부감을 가졌기 때문입니다. 마시에이는 Karafka Pro 버전의 성공과 루비/레일즈 커뮤니티가 Kafka 생태계의 우수성을 충분히 인지하지 못하는 점에 대한 아쉬움을 드러냈습니다. 벤 셸던은 Good Job이 처음에는 단순한 백그라운드 작업만을 목표로 했으나, 사용자들의 지속적인 크론, 배치, 동시성 제어 등 추가 기능 요구에 직면하며 시스템이 예상보다 훨씬 복잡해졌다고 토로했습니다.

사용자들이 가장 많이 오해하거나 어려워하는 부분에 대한 논의도 이어졌습니다. 마이크 팸은 Sidekiq의 Redis 의존성에 대한 사용자들의 막연한 주저함을 지적하며, Redis의 강력한 기능과 안정성을 강조했습니다. 로사는 Solid Queue의 멀티-데이터베이스 설정과 마이그레이션이 필요 없다는 점을 사용자들이 이해하는 데 어려움을 겪는다고 언급했습니다. 마시에이는 Kafka가 단순히 메시지 큐나 작업 큐로만 사용되는 오해와, 개발자들이 문서를 읽지 않는 문제를 꼬집었습니다. 벤 셸던은 작업 큐 이름을 기능(예: mailers_queue)이 아닌 지연 시간(예: 30_second_latency_queue)을 기준으로 명명해야 한다고 강력히 주장하며, 이는 서비스 품질 관리에 필수적이라고 강조했습니다.

향후 10년 후의 시스템 변화에 대한 비전도 제시되었습니다. 마이크 팸은 Sidekiq이 이미 높은 안정성 단계에 도달했으며, 미래에는 루비의 GIL(Global Interpreter Lock) 문제를 해결하기 위한 Ractors의 발전이 핵심이 될 것이라고 보았습니다. 로사는 Solid Queue가 현재 초기 단계이므로, 향후 10년간 더 성숙해지고 특히 동시성 제어 부분에서 성능 개선이 이루어지기를 희망했습니다. 마시에이는 Ractors의 개선과 함께, 레일즈 커뮤니티에 이벤트 중심 아키텍처를 도입할 수 있는 ActiveEvent와 같은 추상화 계층의 등장을 기대했습니다. 벤 셸던은 Active Job 인터페이스가 더 많은 관심을 받고, 동시성 제어와 같은 기능이 내장되어 더욱 강력하고 유연해지기를 바란다고 밝혔습니다. 또한, 패널리스트들은 모니터링, 에러 트래킹, 복잡한 워크플로우 툴링, 그리고 AI 관련 기능 등 루비 커뮤니티가 더 발전시킬 수 있는 새로운 라이브러리 개발 기회에 대해 논의하며, 좋은 개발자 경험과 UI의 중요성을 역설했습니다.

결론

결론적으로, 루비 백그라운드 작업 시스템의 리더들은 각자의 경험을 통해 시스템 개발 및 유지보수의 복잡성과 보람을 공유했습니다. 이들은 기술적 난제(GIL, 트랜잭션 무결성)와 사용자 경험(문서화, 큐 명명법) 사이의 균형을 모색하며, 커뮤니티의 협력과 상업적 모델의 중요성을 강조했습니다. 특히, 향후 루비 생태계는 `Active Job`의 발전과 함께 모니터링, 복잡한 워크플로우, AI 통합 등 다양한 분야에서 새로운 라이브러리 개발 기회를 맞이할 것으로 전망됩니다. 이는 루비 개발자들이 자신만의 '가려운 곳을 긁어줄' 솔루션을 개발하고, 이를 장기적으로 유지보수할 수 있는 지속 가능한 모델을 구축하는 것이 중요함을 시사합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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