Rails의 초기 가정과 현대적 한계
Rails는 “운영 복잡성은 애플리케이션 외부에 존재한다”는 가정하에 백그라운드 작업(Sidekiq), 조정(Redis) 등 현대 백엔드 기능을 외부 시스템으로 분리했습니다. 이는 Rails의 초기 우아함을 유지했지만, 복잡한 현대 환경에서 여러 외부 시스템이 얽혀 운영 부담을 가중시키는 ‘분산된 모놀리스’ 형태를 초래했습니다.
Rage: 복잡성 내재화와 운영 중심 아키텍처
Rage는 “백엔드 복잡성은 피할 수 없으므로, 프레임워크가 최대한 이를 흡수해야 한다”는 철학으로 개발된 API 전용 Ruby 프레임워크입니다. 이 프레임워크는 고동시성 및 운영 복잡성을 Ruby 개발 편의성을 유지하며 내부에서 처리합니다.
Rage의 주요 특징은 다음과 같습니다:
-
Fiber 기반 동시성: HTTP, 백그라운드 작업, 웹소켓을 단일 비동기 런타임 내에서 통합 처리하여 비동기 작업을 애플리케이션의 핵심 기능으로 만듭니다.
-
내장형 백그라운드 작업: 별도 인프라 없이 애플리케이션 내에서 백그라운드 작업을 실행하며, 디스크의 쓰기 전용 로그에 저장하여 Redis나 DB 없이도 작업 전달을 보장합니다. 이는 설정 없는 내구성과 필요 시 확장 가능한 구조를 제공합니다.
-
프레임워크 수준 관측 가능성: 요청 처리, 작업 실행 등 애플리케이션 내부를 모니터링하는 전용 인터페이스를 제공하며, 통합 런타임을 통해 요청 ID가 백그라운드 작업으로 자동 전파되어 심층적인 교차 영역 관측이 용이합니다.
-
‘운영 모놀리스’ 개념: Rage는 “모놀리스는 단일 단위로 배포, 이해, 운영될 수 있는 시스템”으로 재정의합니다. 이는 외부 조정 인프라 없이 단일 서버에서 진정한 모놀리스로 오래 유지될 수 있게 하여, 분산 시스템으로의 전환을 규모에 의해 강제될 때까지 지연시킬 수 있도록 돕습니다.