RoR논의에 대한 제 생각
- Posted at 2006/06/08 21:17
- Filed under 과거블로그글/웹2.0 기술들
By 서민구님
RoR이 좋다/나쁘다, 최고다/아니다. 이런건 좀 아닌 것 같습니다. Java라면 Java가 C++보다 빠르다고 하죠. .NET은 MS가 .NET을 처음에 들고나오면서, Java와 .NET으로 만든 두개의 동일한 web apps를 가지고 돌렸을 때 Java는 그냥 다운되버린다는 데모를 보여주기도 했습니다. .NET이 빠름을 보이기위해 자바의 펫스토어 example을 가지고 .NET이 더 빠름을 MS가 보였습니다. 후에 Oracle이 다시 .NET보다 수천배빠름을 보였고, .NET이 다시 그보다 빠름을 보이고, Loc도 자바보다 적음을 보였습니다. 후에 또 iBatis(OR Mapping 프레임웍입니다)는 자신들의 프레임웍을 적용하면서 자바가 닷넷보다고 빠르다고 우겼죠. 이런식의 언어간의 비교는 특정 벤더나 advocate들의 말만 듣고 결론을 내리기가 무척 어렵다고 생각합니다. 잘 아시겠지만 잘해도 flame war만 야기할 뿐이죠.
제가 생각하기에 어떤 애플리케이션이 scalable한가는 Roger Session이 이야기한대로, stateless로 구현이 되는가 아닌가에 매우 큰 비중이 있다고 생각합니다. 또, Roger아저씨가 쓴 책 COM+ and Battle for the Middle Tier라는 책에도 나오듯이, TP monitor와 같은 구현이 얼마나 쉽게될 수 있는가에 복잡한 웹 애플리케이션의 성패가 달려있다고 생각해도 과언이 아니라고 생각이 됩니다. (아쉽지만 TP 모니터 개념같은게 Ruby엔 없을 거라고 생각되는군요.)
어떤 웹 애플리케이션을 위한 개발환경이 궁극의 정점에 이르렀는가 아닌가에 대한 판단기준으로, 현대적인 의미에서는 쓸만한 persistence layer의 유무, MVC아키텍처(.NET이라면 code behind, JAVA라면 model2)의 유무, 쓸만한 IDE의 유무, 개발자 저변의 확대 정도, 멀티 쓰레딩을 위한 지원의 수준, 잘 갖추어진 보안 모델 등에서 볼 수 있다고 생각이 듭니다. 심지어 Javascript의 경우엔 보안모델이라는 개념 자체가 아예 없기 때문에 이것을 언어의 프레임웍에서 잘 다뤄주는 노력이 필요하게 됩니다.
Ruby가 그토록 쉬운 언어인가 아닌가는 심지어 중요하지 않기도 합니다. 어떤 사람들에게는 C++이 어렵지만 Scott Myers에게는 쉽겠죠. Herbert Schildt라면 심지어 모든 언어들의 API에 빠삭할겁니다. 닷넷 이벤절리스트들은 뚝딱 뚝딱하는 것만으로 애플리케이션을 만들거나, 상대방 프레임웍을 손쉽게 다운 시키는 스크립트들로 무장하고 있겠죠. 제임스 고슬링은, .NET은 unsafe 한 동작이 허용되므로 아무짝에도 쓸모없다고 생각하겠죠, 또 그가 생각하기에는 Groovy가 있으니 JAVA도 스크립트 언어입니다. 모든건 정말 상대적인것입니다.
특히나 RoR이 가진 생산성의 배경은, code generation인데요. 타입 검사가 유연한 언어가 code generation으로 무장하고선 다른 프레임웍보다 우수하다고 주장하는건 상당히 아아러니입니다. 사실 c2.com의 사람들은 code generation을 흔히 리팩토링에서 이야기하는 bad smell로 취급합니다. 어떤 언어가 code generation을 제공한다는 것은, 바로 '기능'이 아니라 'lack of a feature'라는 관점으로 볼 수 있습니다. 이런 관점으로 보면, strong type을 지향하는 언어에서 많은 코드가 캐스팅과 타입 맞추기에 들어간다는 것은 분명히 낭비입니다. 그래서 형을 아예 없애버리거나 형검사를 덜 엄격히 하는 Ruby등의 언어가 우수한 것이죠. 하지만, 기존의 개발환경과 루비를 웹 개발이라는 측면에서 갖다 놓고 보면 둘다 code generation에 의존하고 있습니다. JAVA야 아직 JSF가 빌빌거려서 코드 generation을 쉽게하는 단계에 이르르기 직전의 상태에서 계속 시간을 끌고 있지만, 닷넷의 예를 보면 굉장한 code genration에 의해 apps를 얼마나 쉽게 만들 수 있는지 볼 수 있습니다. (언어 자체도 대단하죠. [WebMethod...] 라고만 메소드 앞에 적어주면 아무 메소드나 XML Webservices가 됩니다. 자바는 EJB 3.0부터 이런것이 됩니다. Ruby는 모르겠군요.)
여기가 랭귀지의 우수성을 따지는 장이 아니라 Web 2.0관점에서 기술을 바라보고자 하는 곳이라면 과연 차세대 언어가 Ruby인가 아닌가는 별로 중요한게 아닙니다. 본질적인 이슈는 팀 오랄리가 이야기했듯이 애플리케이션이 얼마나 빨리 갱신될 수 있는가 하는 것입니다. RAD의 부활이란 얘기죠. 그런 관점에서 스크립트 언어가 우수한 것이고, 그런 관점에서 Ruby가 좋은 것입니다. 여기서 Scalable한가 아닌가는 Ruby에다가 목메도 살 수 있을까 아닐까를 따지겠다는 얘긴데, 그건 아무도 장담 못하는 미래입니다. 흔히들 하는 얘기로 오픈소스의 단점은 RI가 적고, 문서가 적고, 실패했을때 배상해줄 수 있는 사람이 없다고 합니다. Ruby역시 마찬가지 이야기가 적용되는 것이고, 이건 언어가 좋은가 나쁜가와 성공은 별개의 이야기란 의미입니다. 특히나 현재의 마켓쉐어는 1% 안팎에 불과한 듯 싶던데, 이 상태에서 그 언어에 목을 메겠단 결심은 쉽게 하기 힘들군요.
극단적으로 생각하면 RoR엔 AJAX를 쉽게 적용가능하다는 것 말고는 별다른게 없습니다. 그리고 다른 프레임웍들이 그보다 AJAX 적용에 있어서 쓸만한가 아닌가에 대해서는 저는 솔직히 잘 모르겠습니다. 하지만 조금만 시간이 지나면 빠른 프로토타이핑되는 정도야 금방 만들어 질 것이라 생각되는군요.
더 극단으로 가자면, AJAX가 rich interface를 만들기 위한 차세대 기술의 전쟁에서 승리했는가 아닌가도 아직은 불투명한 단계입니다. 자바 애플릿의 폭발을 기억하시나요? 지금 자바 애플릿이 몇군데나 쓰이고 있을까요. 순간만 봐서는 안됩니다. 저번 세미나때도 잠시 말씀드렸다시피, AJAX가 성공할 수 있었던건 그것이 독점 소프트웨어가 아니고, 어디서나 사용될 수 있다는 점 때문입니다. 하지만, 이건 플래쉬도 마찬가지입니다. 매크로미디어 역시 FLEX란 환경이 있고, MS는 XAML이 모든 플랫폼에서 돌아갈 수 있도록 오픈할 계획이 있다는 소문이 있습니다. (실제로 C#같은 언어는 ECMA 표준입니다. 독점이 아닙니다.)
저는 솔직히 AJAX가 아직 쓸만한 수준에 이르르지 못했다고 생각하고, 그 이유를 자바스크립트 실행의 느린 속도와 XML이 너무 verbose하다는데서 찾고 있습니다. 예전부터 XML을 바이너리 형태로 만들어서 크기를 작게하고 이를 통해 빠르게 전송할 수 있는 기술을 만들고 있다고 하던데 이것의, AFAIK, 초기 버젼이 만들어지고 있는 정도입니다. 아직 AJAX가 종착역이다 아니다에 대해서는 결론 내리기도 쉽지 않다고 생각이 듭니다.
흔히하는 얘기로, '언어는 도구다'라는 말이 있죠. C++을 조금만 하는 사람은 자바언어의 기초를 1주일이면 다 뗄 수 있습니다. 자바가 어려워보이는 이유는 그 뒤에있는 풍부한 라이브러나, SMP환경에서 멀티쓰레딩을 잘하는 방법이나, 객체를 deserialize하다가 보안 위협에 노출되지 않도록 코딩하는 방법이나, 확장성있는 클래스를 만들기가 어려운 데 있는거죠. 만약 자바를 할줄알면 C#의 기초는 3일정도면 되고, Python은 언어를 조금할 줄 알면 2일이면 기본은 뗍니다. PHP야 남들이 만든 코드만 놓고 보고 따라하면 되더군요. Ruby도 RoR까지 제대로하면 3일안에는 할줄 알게 될거라고 생각합니다. 하지만 정말 문제는 어떻게 만들어야 하나의 웹 apps를 만들때 RAD가 될까하는 것인데, 이것은 보다 본질적으로 생각해보면 개발철학에 관계된 일이고, 요즘 불어닥치는 XP나 Agile의 관점에서 크게 벗어나는 이야기가 아닙니다.
여기 jeus 만들다 오신 분도 계시고, 다들 경험도 풍부하신데 오버한 것 같아서 죄송스럽습니다. 다만, 저로서는 어떤 프레임웍이 최고다아니다를 이야기하기 보다는 AJAX자체를 어떻게 적용할 것인지(사실 제대로 못하면 이건 iframe으로 프레임 분리한것보다 더 못할지도 모릅니다), 아니면 데스크탑 apps와의 간극을 어떻게 줄여줄 수 있을지, 오라클의 엘리슨이 이야기한대로 Network is a computer인지를 실현시켜줄 녀석이 맞는지, Network as a platform을 만드는데 있어서 자바스크립트로 XML을 주고받는다이면 과연 그것만으로 우리는 행복하게 먼 미래까지 잘 살 수 있을지가 생각해볼 방향인 것 같다는 생각이 들어서 글을 적었습니다. 아직 웹은 데스크탑과 정말 다릅니다. 같아지게 만들어줄 기술도 나오지 않았고요...
p.s. 글을 입력할 때 그냥 textarea에 적을 수는 없나요? 편집기 보다는 그냥 html을 입력하는게 편해서요..
Posted by 한재선
- Response
- No Trackback , No Comment

