루비가 느리다는 편견, 이제 깨질 때가 됐어요
루비(Ruby)를 쓰는 개발자라면 한 번쯤은 "루비는 느리다"는 말을 들어봤을 거예요. Rails로 서비스를 만들면 초기 개발 속도는 빠르지만, 트래픽이 늘어나면 성능 문제가 발목을 잡는다는 이야기가 오래전부터 있었잖아요. 실제로 많은 회사들이 성능 이슈로 루비에서 Go나 Java, Rust 등으로 전환한 사례도 많고요.
그런데 TruffleRuby라는 프로젝트가 이 이야기를 꽤 다르게 만들어주고 있어요. TruffleRuby는 Oracle Labs에서 개발한 루비 구현체인데, GraalVM이라는 고성능 가상머신 위에서 동작해요. 쉽게 말하면, 루비 코드를 기존 CRuby(표준 루비)보다 훨씬 빠르게 실행할 수 있는 새로운 엔진이라고 보면 돼요.
GraalVM이 뭔데, 어떻게 루비를 빠르게 만드는 거야?
GraalVM에 대해 간단히 설명할게요. 이게 뭐냐면, 여러 프로그래밍 언어를 하나의 가상머신에서 고성능으로 실행할 수 있게 해주는 플랫폼이에요. 원래 Java를 위한 JVM(Java Virtual Machine)에서 출발했는데, 여기에 Truffle이라는 프레임워크를 올려서 JavaScript, Python, Ruby 등 다양한 언어를 지원하게 만든 거예요.
핵심 기술은 부분 평가(Partial Evaluation) 기반의 JIT(Just-In-Time) 컴파일이에요. JIT 컴파일이 뭐냐면, 코드를 실행하면서 자주 쓰이는 부분을 실시간으로 기계어로 변환해서 빠르게 만드는 기술이에요. CRuby에도 YJIT라는 JIT 컴파일러가 들어갔지만, GraalVM의 JIT는 훨씬 더 공격적인 최적화를 적용해요.
TruffleRuby의 접근 방식이 독특한 건, 루비 인터프리터 자체를 Truffle 프레임워크로 작성하면 GraalVM이 자동으로 JIT 컴파일러를 생성해준다는 점이에요. 언어 개발자가 인터프리터만 잘 작성하면, 최적화 컴파일러는 GraalVM이 알아서 만들어주는 거죠. 마치 "나는 레시피만 쓸 테니, 요리는 로봇 셰프가 알아서 해"라는 것과 비슷해요.
구체적으로 얼마나 빠른 건데?
TruffleRuby의 Chris Seaton이 공개한 벤치마크에 따르면, 특정 워크로드에서 CRuby 대비 10배 이상 빠른 성능을 보여주는 경우가 있어요. 특히 수치 연산이나 반복적인 계산이 많은 코드에서 차이가 두드러지는데요, JIT 컴파일러가 루프를 최적화하고 인라이닝(함수 호출을 없애고 코드를 직접 삽입하는 기법)을 적극적으로 적용하기 때문이에요.
물론 모든 상황에서 10배 빠른 건 아니에요. 웹 애플리케이션처럼 I/O 바운드(네트워크나 디스크 대기가 많은) 작업에서는 차이가 줄어들고, 워밍업 시간이 필요하다는 단점도 있어요. JIT 컴파일러가 코드를 분석하고 최적화하는 데 시간이 걸리거든요. 서버가 시작된 직후에는 오히려 CRuby보다 느릴 수도 있지만, 시간이 지나면서 점점 빨라지는 패턴이에요.
호환성 면에서도 많은 진전이 있었어요. 초기에는 Rails 앱을 돌리기 어려웠는데, 지금은 대부분의 순수 루비 젬(gem)을 지원하고 Rails도 돌아가요. 다만 C 확장(native extension)을 사용하는 일부 젬에서는 여전히 호환성 이슈가 있을 수 있어요.
업계 맥락: 루비 성능의 르네상스
사실 루비 진영에서는 최근 몇 년간 성능 개선에 엄청난 노력을 기울여왔어요. Ruby 3.0에서 "Ruby 3x3"이라는 목표(Ruby 2.0 대비 3배 빠르게)를 세웠고, YJIT 컴파일러의 도입으로 이 목표를 상당 부분 달성했거든요. Shopify가 YJIT 개발에 크게 기여했는데, 자사 서비스의 루비 성능을 끌어올리기 위한 투자였어요.
TruffleRuby는 이와 다른 접근이에요. YJIT가 CRuby 안에서 점진적으로 최적화를 추가하는 방식이라면, TruffleRuby는 아예 런타임 전체를 새로 만든 것이거든요. 성능 잠재력은 더 크지만, 기존 생태계와의 호환성 확보가 더 어렵다는 트레이드오프가 있어요.
비슷한 접근으로 JRuby(JVM 위에서 돌아가는 루비)도 있는데, TruffleRuby는 JRuby보다 더 최신 기술인 Graal 컴파일러를 활용해서 최적화 성능이 더 뛰어나다는 평가를 받고 있어요.
한국 개발자에게 주는 시사점
한국에서도 Rails를 쓰는 팀이 꽤 있잖아요. 특히 빠르게 MVP를 만들거나 관리자 페이지를 구축할 때 Rails만 한 게 없는데요, 성능이 고민이었던 분들은 TruffleRuby를 한번 살펴볼 만해요.
다만 프로덕션에 바로 적용하기보다는, 먼저 자신의 앱에서 벤치마크를 돌려보는 걸 추천해요. 특히 CPU 바운드 작업이 많은 배치 처리나 데이터 가공 로직이 있다면, 그 부분만 TruffleRuby로 돌려보면서 효과를 측정해볼 수 있거든요. GraalVM 설치도 예전보다 훨씬 간편해졌고, rbenv이나 asdf를 통한 설치도 지원되니까 진입 장벽이 높지 않아요.
핵심 정리
"루비는 느리다"는 더 이상 절대적인 명제가 아니에요. TruffleRuby는 GraalVM의 강력한 JIT 컴파일러를 활용해서 루비의 성능 한계를 크게 끌어올리고 있고, 호환성도 점점 좋아지고 있어요. 루비를 쓰고 계신 분들, 혹시 성능 때문에 다른 언어로의 전환을 고민해본 적 있나요? TruffleRuby가 그 고민을 줄여줄 수도 있을 것 같아요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공