페이지

2013년 1월 24일 목요일

루비온레일즈


는 대부분의 시간을 같이 보낸 언어는 PHP, JAVA 입니다. 가장 익숙한건 아무래도 가장 오래하고 개발자층도 많은 JAVA 겠습니다.
이것은 나의 개인적인 선택이 아닌 돈을 받고 일을 하는 직업 프로그래머의 특성상 국내에서 가장 많이 쓰이는 일감이 많은 언어 순서대로 많이 할수 밖에 없었습니다.
PHP 는 언어의 초기 목표부터가 최대한 간단하며 누구나 쉽게 쓸수 있는 웹개발에 특화된 언어로써 지니는 특성으로 많은 장점과 동시에 많은 한계를 갖고 있었습니다. 지금은 물론 상당히 발전하고 OOP 적인 부분과 신기술이 도입되어 많이 다릅니다.
JSP 는 그런 PHP의 한계를 많이 매꿔주며 JAVA라는 강력한 프레임웍을 토대로 최신기술 트렌드를 주도해나가며 기업시장과 정부주도로 확장해나가게 되어 어쩔수 없이 PHP만 하다가 일거리가 바껴서 JSP 를 배워야 되기에 JAVA 또한 하게 되었습니다.
근데, 항상 일에 언어를 맞추고 나를 맞추게 되다보니 정작 내가 원하는 일과 언어를 사용하지 못하고 있는 내 자신을 볼수 있었습니다. 회사에서 작성하는 그런 팀단위로 이뤄진 웹개발언어의 코드라는건 시간이 갈수록 남의 코드와 같이 모르는 부분은 주석처리하고 다시 만들어 써넣기 반복되며 같은 이름의 클래스와 변수가 다르게 상속되거나 다른 의미로 사용되며 엄청나게 유지보수가 힘든 정말 절대 못푸는 실타래와 같이 암호화된 코드가 됩니다.
그러던중에 알게 된 새로운 언어들과 개발 프레임웍들이 Ruby / Ruby on Rails 와 Python / Django 그리고 Perl / Catalyst 였습니다.
처음에 Ruby on Rails 를 만들기 시작한 david heinemeier hansson 도 비슷한 대중성을 이유로 PHP로 만들어보려고 했다고 합니다. 하지만, 웹프레임웍을 만들려고 할려 한 2000년대초 당시엔 좀 언어로써 부족한 면이 많았습니다.
위에 얘기한거처럼, 사실 저는 Ruby on Rails 로 대규모 서비스 개발을 회사와 프로젝트에서 해본적이 없습니다. 해봐야 PHP나 JSP 서비스의 관리툴 정도로 저혼자 몰래(?) 만들어서 개발 서포트용도로 쓴 경우가 대부분이었습니다. 그리고 개인적으로 작은 필요에 의해서 만든 크롤러라던가, 재미로 간단히 만들어본 웹서비스 몇몇개 수준입니다.
근데 포스팅이 Ruby on Rails 로 대부분 채우게 되고 있습니다. 그건 제가 그만큼 Ruby on Rails 에 매력을 느끼고 최근 관심이 많다는 것이겠습니다. 그러면 왜 그럴까요? 그 이유를 설명하려고 포스팅을 하려 합니다.
Python 과 Perl 은 전에 가끔 간단한 시스템 관리용 복사, 백업같은 스크립트를 만드느라 써본 경험은 있었습니다. 하지만, 웹개발엔 전혀 써본적이 없어서 웹프레임웍이 있다는 사실조차 모르고 있었습니다. 그래서 하나씩 한번 어느것이 나에게 맞고 장단점이 있는지 몇년전부터 테스트하고 써보기 시작했습니다.
Python 은 아주 간결하고 규칙대로 해나가는 언어로 좋았습니다. 하지만, 그 탭을 맞추고 괄호로 이어지는 코드들은 좀 일단 쳐놓고 결과를 빨리 보고싶어하는 성격이 급한 나의 특성상 안맞았습니다.
Perl 은 보다 느슨한 규칙으로 빠른 코드를 쓰고 실행할수 있게 해주었지만, 그게 역시 단점으로 코드가 웹개발로 가면 여러가지 조건처리과 문자열처리로 엄청나게 난해해졌습니다.  물론 이건 제가 해당 언어에 미숙한 탓도 있습니다.
하지만, Ruby 는 이 둘을 절묘하게 섞어서 문법에서 자유와 깔끔한 코드를 만들어주었습니다. 정말 딱 필요한 글자만으로 코드를 내가 할만만 간단히 해서 적을수 있다는 느낌이었습니다. 그 언어적 특성에 기반하여 만들어낸 Rails 는 Ruby 의 특성을 최대한 살리면서 반복적인 작업을 정말 모두 자동화시키며 프로그래머는 뭘 만들어야되는지에만 집중하게 만들어주었습니다.
한때 몇년전에 Ruby on Rails 에 대한 요구가 우리나라에서도 번역된 서적이 출간되며 붐이 일뻔하다가 시장에서 수요에 대한 요구가 너무 없어서 다시 침체되었습니다. 하지만, 최근 Twitter 를 비롯하여 Groupon 같은 해외 글로벌 기업들의 개발 프레임웍으로 인정받으면서 다시 주목받을수 있지 않을까 생각합니다.
저는 국내 기업들과 개발자들이 어느 한 기술에 대해서 너무 얶매여 있지 말고, 다른 여러 시도를 해보는 것이 좋다고 생각합니다. 왜냐면, 저 또한 그런 편견을 깨지 않았다면 PHP 와 JSP만 해도 충분한 국내 개발 수요로 먹고 살며 다른 쪽은 보지도 않고 그냥 현실에 안주하며 새로운 세계를 보지 못했을거기에 말씀드립니다.
Rails 는 정말 어느정도 익숙해지면 경악할만한 개발속도와 차후 유지보수에 드는 노력 또한 엄청나게 절약해줍니다. 이게 정말 놀라운 것은 소프트웨어 개발이란 당연하게도 금방. 빨리. 만들면 코드가 정리안되고 엉망이라 계속적인 업데이트와 유지보수가 힘들어야되지만, Rails 는 그 코드 정리와 설계 과정을 대부분 자동화시켜 주고 필요한 부분에만 직접 써넣게 해주기에 왠만큼만 해놓아도 상당히 잘 정리된 설계가 나옵니다. 그리고, 당연하지만 OOP 를 완벽히 지원하는 스크립트 언어의 특성상 중복되는 코드도 최소화로 가져가며 클래스가 상속되는 구조로 갈수 있습니다.
물론, 단점도 있습니다. 기술적 내용이라 상세히 이 글에서 다 적지는 못하지만, 좀 느린 실행 속도와 최적화가 어렵다는 점입니다. JSP의 경우 JAVA 미들웨어도 교체하고 스케일아웃에 대한 이것저것 많은 상용 제품도 많고 JAVA 가 일단 기술 지원이 되니 해결책이 상당히 많습니다. PHP의 경우는 최적화를 하지 않아도 기본적으로 소규모사이트에선 언어 자체의 성능으로 충분하니 문제가 없습니다.
그러나, Rails 는 중간에 위치하기도 애매하고 아예 대규모 서비스로 가기도 퍼포먼스 측면에서 힘든 부분이 있습니다. 물론 제가 아직 그정도로 대규모 서비스 개발은 않해봐서 아직 모르는 부분이기도 합니다. 하지만,  Twitter 처럼 Back-end 부분은 분리해 나눠서 Rails 가 개발 효율성이 높은 Frond-end 부분을 맡고 아닌 부분은 타언어로 대체 합니다. 그래도 빠른 개발 속도와 유지보수가 쉬운 코드는 이런 단점을 모두 상쇄하고도 남는다고 저는 자신합니다.
마지막으로, 아마추어 프로그래머라면 어떤 언어로 무엇을 개발하든 사실 상관없습니다. 시간에 구애받지 않고 목표는 자신의 취미를 위해 하는 것이니까 말입니다. 하지만, 프로페셔널한 직업 프로그래머의 경우는 다릅니다. 자신의 최소한의 노동으로 최대한의 결과를 뽑아내는게 내 자신과 나를 고용한 회사 모두에게 이익입니다.
물론, 최대한의 노동으로 최대한 좋은 결과를 뽑아내면 좋겠지만, 그건 내 자신이 너무 힘든일입니다. 회사에서 맨날 야근할수도 없는 노릇이니, 누가 과연 그렇게 힘들게 살고 싶을까요? 프로그래머의 생활이란  회사에서 야근으로 중첩되고 지친 생활이 아니라 주어진 일을 빨리 끝내고 집에 가서 취미생활도 하는 것이 맞다고 생각합니다.
그런 시간의 여유를 가능하게 해주는 도우미? 친구? 도구가 Ruby on Rails 라고 생각합니다.
이것이 Rails 의 포인트이고 중요한거 같습니다.
반복적이고 컴퓨터가 할수 있는 일은 최대한 컴퓨터와 자동화된 도구에 맡기고 사람만이 할수 있는 일은 최소한으로 사람이 하도록 만드는 것.

댓글 없음:

댓글 쓰기