Ruby on Rails는 Perl, Python에 밀려 그렇게 주목받지 못하던 Ruby라는 언어를 화려한 주류언어의 무대로 끌어올린 대표적인 스타 웹프레임웍이다.
Perl하면 옛날의 CGI기반 게시판 등 고리타분 한 인식을 가진 사람들도 있겠지만 그건 호랑이 담배피던 시절 이야기고 현재에는 Perl에도 Ruby on Rails 못지않은
많은 MVC기반 웹 프레임웍들이 존재한다. 그중에서 제일 대표적인 것이
Catalyst인데 최근 Ruby on Rails와 Catalyst의 성능을 비교한 흥미로운 글이 있어 소개하려고 한다.
예전 2009년 4월 Victor Igumnov란 사람이
Catalyst vs Ruby on Rails의 성능을 비교한 글이 있었는데 그때 당시 결과는 Ruby on Rails 가 Catalyst 보다 약 62%정도 빨랐다. 그래서 인터프리터의 성능이 여타 언어보다 빠르다고 알려진 Perl이 비교적 느리다는 Ruby에서 구현된 웹프레임웍 보다 성능이 떨어지는데 의문을 품고 분석한 결과 Catalyst의 Controller구현에서 다중상속에서 메소드의 연속적 호출에 쓰이는
NEXT 모듈의 병목 때문에 성능이 떨어짐을 알아내고 Catalyst개발자에게 알려 이것을 새로운
C3 모듈로 교체하여 성능을 개선했는데
그 후 이런 개선사항이 반영된 새로운 Catalyst 5.8 버젼으로
다시 둘의 성능을 비교했더니 놀랍게도 Catalyst가 single process일때 Ruby on Rails 보다
135%, forking 된 multi process 환경에서는
471% 빨랐다고 한다.
Catalyst는 약간의 진입 장벽은 있지만 여타 프레임웍과는 다르게 ORM과 Template엔진을 필요에 따라 여러 가지로 교체해서 사용할 수 있어 개방적이고 확장성이 뛰어나다고 알려져 있다.
그런데 벤치마크결과에서 더 놀라운 것은 성능이 대폭적으로 향상된 Catalyst 5.8은 예전 5.7대 버젼에서는 OOP구현을 위해
Class::Accessor::Fast 라는 모듈을 사용한데 반해
Moose 라는 Meta Object Protocol 기반의 진보된 OOP프레임웍으로 교체하였다는 것이다. Moose는 다소 번거로움이 많았던 Perl OOP구현을 어느 언어보다 편리하고 획기적이며 진보적인 방법으로 할 수 있도록 발전시킨 OOP프레임웍으로 다소 메모리를 좀 더 소비하고 속도가 떨어진다는 비판을 받았는데 Moose가 기반이 된 Catalyst 5.8의 성능이 이 정도로 나오는 걸 보면 그런 걱정은 기우에 지나지 않았나 생각된다.
Catalyst가 쓰이는 대표적인 서비스로는 일본 최대의 Social Network 싸이트인
mixi, 세계 최대규모 도색 동영상 싸이트 중 하나인
Youporn( Alexa 싸이트순위 44위 참고로 우리나라 최대 포털 naver는 60위권) 영국 BBC의
BBC News,
BBC iplayer,
Vox,
Ticketmaster,
Shopzilla, Takkle, Editgrid, IUseThis, MighTyV 등이 있다. (
Site running Catalyst )
Perl Catalyst 한 번 해보시지 않으시겠습니까?
참고: 또 다른
Catalyst vs Ruby on Rails 자료