Header

  1. View current page

    딥뿔이 자라나는 노트

Profile_image?t=1225424611&type=big
나를 바꾼 똑똑한 생활 습관, 스프링노트 - 여러분도 지금 시작해보세요!
38

(2) 레일스의 그늘과 대안 웹 프레임워크

 

레일스의 그늘

잘 나가는 레일스라고 다 좋은 것만은 아니다. 당연히 단점, 문제점들도 있고 여러 채널을 통해 지적되고 있다. 하지만, 단점보다 장점이 크다는 판단이 서기 때문에 많이 쓰이고 있다고 생각한다.

 

레일스의 단점으로 가장 자주 지적되는 부분이 배포 환경(deployment)이다. 아무리 capistrano가 자동화를 해줘도 애초에 복잡하고 어려운 부분이다. 아파치, 프록시 밸런서, 몽그렐, 몽그렐 클러스터, 모닛 등 알아야할 지식이 너무 많은데 친절하게 설명해주는 사람도 많지 않다. 그리도 어찌나 변화무쌍한지... 다행히 요즘은 RubyWorks, RubyStack, deprec 등 하나로 모든 것을 해결할 수 있는 배포 스택이 나오고 있는 추세다. JRuby를 통해 자바와 친해지면서 자바에서 배워오기도 한다.

 

다른 단점은 좀 근원적인 것인데, 레일스가 다중 스레드에 대한 고려가 부족하다는 점이다. 다중 스레드 모드로 돌리는 옵션이 있기는 하지만, 한동안 그 옵션을 끈 것이 기본 값이었으므로 이 옵션을 켜는 것만으로 다중 스레드 환경에 잘 대응하리라고는 생각되지 않는다. 다중 스레드를 지원하지 않아서 배포의 어려움이 증가하고(클러스터링이 필요), 여러 개의 루비 인스턴스가 필요하고, 그 결과 많은 메모리가 필요하다. 공유 호스팅 환경에는 레일스 애플리케이션을 배포하지 말라는 말까지 나온다. 워낙 서비스가 불안정해지기 때문이다. 호스팅이 어렵다면 많은 사람들이 사용하기 힘들다.

 

레일스가 워낙 킬러 애플리케이션이기는 하지만, 이것 하나에만 너무 집중된 루비 커뮤니티도 문제라는 지적이다. 오랜 기간 유일한 테스팅 프레임워크처럼 여겨지던 xUnit이 우리의 사고를 제약했던 것처럼, 레일스가 루비 커뮤니티를 정체시키지는 않을까 우려스럽다.

 

그리고 끝으로 레일스가 이미 간단한 애플리케이션을 만들기에는 너무 무거워져버렸다는 사실이다. 항상 여러 개의 테이블을 만들고 관계가 복잡한 애플리케이션을 만드는 것은 아니니까 말이다.

 

대안 웹 프레임워크

이런 저런 이유로 요즘 루비 커뮤니티는 대안 웹 프레임워크들에 인자한 편이다. 가장 설득력있는 주장은 레일스가 점점 쉬워질수록 더 지루해질 테니, 개발의 재미를 위해서라도 다른 프레임워크를 시도해보라는 것이다. 레일스를 계속 사용할 때는 물론 레일스의 변경 사항과 좋은 기능을 잘 사용하고, 기민하게 개발을 진행하겠지만, 여기에 자신의 새로운 아이디어를 집어넣는 것을 잊지 말라는 것이다. 좋은 이야기다. 단지 명령을 받는다면 재미가 없을테니 말이다.

 

레일스의 대안이 될 만한 프레임워크에는 _why가 만든 4 킬로바이트짜리 마이크로프레임워크 캠핑(Camping)을 필두로, 몽그렐 핸들러를 기반으로 가벼운 레일스를 표방하는 Merb, 작은 웹 애플리케이션 개발에 최적화된 Sinatra, 풀 스택이 아니라는 점이 특징인 Ramaze, 루비보다는 php에 가까운 Wuby 등 여기서 다 나열하기 힘들 정도로 많다. 이 중 Merb는 레일스의 단점(싱글 스레드)을 버리고, 장점(리소스)을 취하는 접근으로 주목받고 있다. 최근에는 <그림 3>에 보이는 것처럼 세련된 홈페이지도 마련하고, 루비스트들을 유혹하고 있다.

 

그림_3.png

그림 3 레일스의 대안으로 기대되는 Merb 프레임워크

 

ORM도 액티브 레코드 대신 Sequel, DataMapper, Ambition 등을 사용할 수 있다. 이 중 DataMapper는 액티브 레코드보다 더 빠르고, 다중 스레드도 잘 지원하고, 기능도 풍부하고 똑똑한 것을 장점으로 내새운다. 한번 살펴볼만하다. 템플릿 렌더러도 다양하기는 마찬가지다. ERB, Builder 외에도 Amrita2, MasterView, Liquid, Markaby, Haml, DRYML 등을 사용할 수 있다. 이 중 최고 간결함이 무기인 Haml과, 루비로 DSL을 정의한 독특한 방식의 Markaby를 주목해보자.

 

개인적으로 레일스 외에 다른 루비 웹 프레임워크를 추천하라고 한다면 Merb + DataMapper + Haml 조합을 한번 사용해보라고 권하고 싶다. 정말 작은 기능이라면 몽그렐 핸들러를 직접 만들던지 아니면 Sinatra를 이용해 한 파일에 담는 것도 좋은 방법이다.

 

이어서 - (3) 2.0 시대의 루비, 루비 1.9.1

 

 

History

Last edited on 02/26/2008 21:56 by deepblue

Comments (0)

You must log in to leave a comment. Please sign in.