이글을 읽는 독자라면 프로그래밍 언어인 루비(Ruby)에 대한 관심과 논란이 많음을 알고 있으리라 생각된다. 그중에서도 웹 애플리케이션 개발 프레임워크인 Rails에 대해서는 더욱 두드러지다. 어떤 이들은 Rails가 앞으로 나아갈 방향이라고 말하기도 하고, 다른 이들은 위험한 시도로 폄하하기도 한다.
나는 몇 년전부터 루비를 다뤘다. 나는 pragmatics 시리즈에 관심을 갖게 되었고, 곧 스크립트 언어중에서 루비를 가장 좋아하게 되었다. 시간이 흐를수록 내 사이트, 그 중에서도 이 블리키(bliki)의 많은 부분은 루비로 개발했다. 나는 루비를 무척 좋아한다.
내가 루비를 좋아하는 것과 고객의 프로젝트에서 사용하는 것은 별개의 문제다. 고객의 프로젝트에서 루비가 적합한지 평가하는 것은 시스템의 특징에 달려있다. 한편, 루비를 평가하고자 들면 동적인 타입 정의(dynamic typing)와 설정없이 컨벤션을 따르는 것(convention over configuration)의 장단점 논란이나 프로세스기반 프로그래밍과 쓰레드 기반 프로그래밍의 차이에 관한 논란을 마주하게 된다. 이러한 논란은 유용하긴 하지만 나는 이들에 대해 언급하는 것을 조심하게 된다. 토론에 의해서이를 평가하는 것은 무척이나 어려운 일이며 고객의 프로젝트에서 평판이 좋은 기술 탓에 프로젝트가 지연되는 일을 겪기도 한다. 나는 토론보다는 경험에 기반해서 평가를 내린다. 루비를 사용했던 사람과 주요 프로젝트에 적용되었던 기록을 갖고 있는 사람을 찾는다. 공공연하게 이러한 내용들이 기록된 것을 찾을 수 있다. 많은 사람들이 루비에 매력을 느낀다. 그들은 다른 언어를 통해서도 성공적인 경험을 갖고 있지만, 루비는 그와는 다른 이점을 제공한다고 한다. Andy, Prags, Justin Gehtland, Bruce Tate, David Geary 등은 루비에 더욱 관심을 가게 하는 이들이다. 그러나, 나의 주로 ToughtWork의 직원들의 경험을 최우선시하는 편협함을 갖게 된다.
아직 이른 감이 있지만, 몇몇 프로젝트를 루비를 활용하여 진행했고, 아직까지는 상당히 긍정적이다. 자바나 C#에 보해 눈에 띌 정도로 생산적이냐는 질문을 받으면, 매번 강하게 그렇다고 얘기한다. 적절한 프로젝트에 사용하는 경우는 이는 옳은 대답이라고 생각된다. 그렇다면 어떠한 적합한 프로젝트인가 하는 물음이 남는다.
우리회사가 수행하는 몇몇 웹 프로젝트는 모두 Rails의 영역에 부합하는 것이지만 서로 다른 측면을 갖고 있다.
- 사용자가 터치 스크린을 이용해 조작하는 키오스크 장비 개발. UI가 Ajax 스타일에 딱 맞기 때문에 Rails를 사용한다. 그러나, 리눅스 환경하에서 하드웨어 장비와의 통신, 암호화나 복잡한 네트워크 관련된 기능들을 포함하고 있다.
- 배치 공정에서 수많은 SQL 조작을 하는데 Ruby를 쓰는 경우가 있다. Ruby 구무문이 궁극적으로는 SQL로 변환되어 실제작업이 수행된다. 전형적인 Rails 애플리케이션은 아니지만, 앞단에서 Rails의 역할은 상당히 적절하다.
- 여러모로 전형적인 웹 애플리케이션으로 취급할 수 있는 프로젝트이지만 상당량의 데이터를 여러 유형으로 변환해야 하고 보기 좋은 그래프나 차트를 출력해야 하는 것이 포함되어 있는 경우.
이 모든 경우에 있어 다른 플랫폼과 비교했을 때, 루비가 발휘하는 기능과 가치는 점점 막강해지고 있다. 이런 연유로 빠른 개발과 생산성이 요구되는 경우라면, 루비를 심각하게 고려해보라고 권하고 싶다. 아직은 몇몇 의문이 남아있다. 특히 아직은 초기라 팀에 변화가 가해진다거나 하는 상황에서 어떠한 일이 벌어질지에 대해선 알 수 없다. 어떤 이들은 루비의 동적인 특성과 도구 부족을 문제삼고, 루비 적용으로 발생하는 단순함이 진정함 강점이라고 말한다. 이러한 유형의 문제는 아직은 뭐라 말하기 힘든 것이기에 더 알게 되면 그때가서 이글을 갱신하겠다.
Cedric Beust는 자신의 글에서 루비가 아무리 훌륭한 플랫폼이라고 해도 주류가 되지는 못할 것이라고 논리적인 주장을 펼쳤다. 나는 그의 주장이 충분히 설득력이 있다고 생각한다. 과거에도 충분히 생산성이 뛰어난 플랫폼이 있었지만 현재 주류로 자리잡지는 못한 선례는 많다. 주류 플랫폼을 취급하는 경우라면 아직은 시간을 두고 지켜볼 필요가 있다. 주류 여부를 따지는 문제에는 관심이 없는 이들도 상당하다.
또한, 여러 프로젝트가 정치적인 이유나 기타 의사소통의 문제로 생산성 저하를 겪는 일은 다분히 발생한다. 이러한 경우라면 루비의 장점은 별로 두드러져보이지 않게 된다. 그러나, 전체적으로 봤을 때 나는 점점 속도나 응답성, 생산성이 중요한 민감한 작업에도 루비를 사용하는 것에 긍정적인 생각을 갖게 된다.
기타 참고 사항

이올린에 북마크하기
이올린에 추천하기