1. Shoryuken v7.0.0의 주요 변화와 Rails 8.1 지원
Shoryuken v7.0.0은 최신 Rails 생태계와의 통합을 최우선 과제로 삼고 있습니다. 특히 Rails 8.1 이상에서 도입된 핵심 기능들을 완벽하게 지원하도록 설계되었습니다.
- ActiveJob Continuations: 작업 중단 시 진행 상황을 체크포인트로 저장하고 재시작 후 해당 지점부터 다시 실행할 수 있는 기능을 제공하여 작업의 안정성을 높였습니다.
- Bulk Enqueuing (enqueue_all): SQS의 Batch API를 활용하여 여러 작업을 한 번에 큐에 삽입함으로써 네트워크 오버헤드를 줄이고 처리 속도를 개선했습니다.
- CurrentAttributes 자동 전달: 작업 예약 시점의
CurrentAttributes가 실행 시점까지 자동으로 유지되어 컨텍스트 관리가 용이해졌습니다.
2. 코드베이스 현대화 및 의존성 최적화
성능 향상과 유지보수 용이성을 위해 내부 구조를 대대적으로 개편했습니다.
- 의존성 제거:
concurrent-ruby젬에 대한 의존성을 완전히 제거하고, 순수 Ruby의 스레드 안전 기본 객체(thread-safe primitives)로 대체하여 라이브러리를 경량화했습니다. - Monkey-patching 제거: 기존에
Hash나String클래스에 직접 확장하던 방식을 버리고,HashUtils및StringUtils와 같은 유틸리티 클래스를 사용하는 방식으로 전환하여 다른 라이브러리와의 충돌 가능성을 최소화했습니다. - 자동 로딩 개선: 최신 Ruby 관례에 따라 Zeitwerk를 도입하여 클래스 로딩 방식을 현대화했습니다.
3. 인프라 및 품질 관리 강화
개발 및 배포 프로세스의 신뢰성을 높이기 위한 인프라 개선이 이루어졌습니다.
- 신뢰할 수 있는 배포(Trusted Publishing): Gem 배포 시 보안을 강화하기 위해 신뢰할 수 있는 게시 방식을 도입했습니다.
- 테스트 환경 개선: LocalStack을 활용한 통합 테스트 시스템을 구축하여 실제 AWS 환경과 유사한 로컬 개발 환경을 제공합니다.
- 문서화 및 호환성: YARD를 통한 100% 문서화 커버리지를 달성했으며, CI 환경에서 Ruby 4.0(개발 버전)까지 테스트하여 미래 호환성을 확보했습니다.
4. 하위 호환성 및 업그레이드 주의사항
이번 버전은 현대적인 환경을 지향하므로 이전 버전과의 호환성 단절이 발생합니다.
- 최소 요구 사양: Ruby 3.2 이상, Rails 7.2 이상, 그리고
aws-sdk-sqs1.66 버전 이상이 필수적입니다. - 레거시 지원: 이전 버전의 Ruby나 Rails를 사용하는 프로젝트는 Shoryuken 6.x 버전에 머물러야 합니다.
5. 향후 로드맵: Web UI 및 성능 모니터링
새로운 메인테이너는 v7.0.0 안정화 이후의 계획도 구체적으로 제시했습니다.
- Dashboard 개발: Sidekiq과 유사한 실시간 큐 모니터링, 워커 상태 확인, Dead Letter Queue(DLQ) 관리 기능을 포함한 전용 Web UI를 구축할 예정입니다.
- 관측성(Observability) 강화: Prometheus, StatsD와의 통합 및 분산 추적(distributed tracing) 기능을 추가하여 운영 환경에서의 가시성을 높일 계획입니다.