루비온레일즈는 XML, JSON API를 제공하기 쉽고, 아이폰을 비롯하여 멀티 디바이스에 대응하는 최적의 데이터 서버 운영환경입니다.

 

저희 씽크리얼스에서 지금까지 루비온레일스 서버를 운영하면서 얻은 노하우를 소개해드리려고 합니다.

 

1. 우선 서버는 Ubuntu Linux Server Edition 최신의 안정버전을 선택하실 것을 권장합니다. http://www.ubuntu.com/

그 이유는, ruby gem들이 systemc 라이브버리를 활용하는데, 서버 버전마다 한글 문제 등의 처리가 조금 다를 수 있습니다. 저의 경험상으로는 Ubuntu LinuxUTF-8 기준으로 한글처리가 잘 되는 듯 합니다. 예를들어, nokogiri 등의 gem에서 한글처리시 서버마다 다른 동작을 할 수 있습니다. 경험상 Ubuntu Linux를 권장합니다.

 

2. Ruby 인터프리터: http://www.rubyenterpriseedition.com/

루비의 성능면에서 서버최적화된 Ruby 인터프리터 입니다. 지금까지 사용하면서 큰 문제는 없었고, 성능은 20~30%정도 향상된다고 홈페이지에 설명하고 있습니다.

 

3. Ruby on Rails 서버는 Apache + Phusion Passenger http://www.modrails.com/

Passenger Apache 웹서버 혹은 Nginx서버와 연동하여 서버 운영환경을 구성할 수 있습니다. production모드에서 성능이 괜찮습니다.

 

4. config/environments/production.rb config.threadsafe! 설정

production 모드에서 동시에 여러 request multi-thread로 처리할 수 있습니다. 멀티코어에서 효율성이 더 증대된다고 합니다. 이것도 성능향상을 위한 중요한 설정중에 하나입니다.

http://guides.rubyonrails.org/2_2_release_notes.html#thread-safety 에서 조금 더 자세한 설명을 보실 수 있습니다.

 

5. Rails 에서 지원하는 다양한 Cache

Ruby on Rails는 다양한 Cache 기법을 기본 제공합니다. 이것을 서비스에 적절히 활용한다면 큰 성능향상 효과를 얻을 수 있습니다. 페이지 전체를 통으로 HTML로 만들어 버려서 server response time 0ms로 만들어주는 page cache 기법부터, action cache, fragment cache 등 기본제공됩니다. 이렇게 제공되는 다양한 cache 기법들은 서버 운영 리소스를 줄이고 성능향상을 향상할 수 있는 좋은 방법입니다. Cache 동영상강의가 railalab에 가면 잘 준비되어 있습니다. 필요하신 분은 아래 링크에서 동영상 강의로 쉽게 배울 수 있습니다.

http://railslab.newrelic.com/2009/01/22/page-caching

 

이 글이 국내에서 Ruby on Rails로 서버 운영 환경을 고려하시는 분들께 미약하게나마 도움을 드릴 수 있었으면 좋겠습니다.


좋은 팁을 알게 된다거나 더 생각나는 것이 있으면 차후에 다시 블로깅 할 수 있도록 하겠습니다

궁금하신 점이나, 혹시 잘못된 정보가 있으면, 트위터 아이디 @jaehyun 로 피드백주세요. 언제나 환영입니다.

 

Posted by thinkreals
저희 회사는 37signalsGetting Real 개발 방법론에 따라 소프트웨어를 개발하고자 노력합니다.

소프트웨어는 능력있는 개발자가 참여하여 좋은 소프트웨어를 개발하는 것도 중요하지만, 소프트웨어의 규모가 커지면서 유지보수의 어려움에 부닥치게 되는 것은 어느 조직이나 겪는 어쩔수 없는 문제라고 생각됩니다.

소프트웨어의 규모를 작게 유지하면서, 변화하는 요구사항에 유연하게 대처할 수 있는 작은 사이즈를 유지하는것이 중요하다고 판단됩니다.
필요한 기능의 핵심에 집중하여 간단하면서 사용하기 쉬운 소프트웨어를 개발하는 것 입니다.

Getting Real 문서에 언급되듯이, 프로젝트 관리도구인 MS Project 2000 같은 기능이 많고 복잡한 소프트웨어도 있지만,  Basecamp 처럼 간단한 프로젝트 관리 도구도 있습니다.
복잡한 것을 싫어하고, 간단한 것을 원하는 조직이 있을 수 있습니다. 그들을 만족시키는 소프트웨어를 개발하면 됩니다.
작게 유지하는 것의 장점이 많다고 생각됩니다.

최근, 37signals에서 REWORK 이라는 새로운 Business book을 출간하였습니다. 제가 좋아하는 Ruby on Rails를 만든 David Heinemeier Hansson 이 Jason Fried 와 같이 집필하였습니다.

아직 못 받아 봤지만, http://37signals.com/rework/ 에서 PDF 미리보기 몇장을 보니 책의 내용이 기대가 됩니다^^





Posted by thinkreals
제가 웹 개발을 처음 접해본 지가 벌써 10년이 다 되어가는 것 같습니다.

처음 접한 웹개발 언어는 ASP 였는데,
그 당시에는 태그매니아 사이트에서 HTML을 배우고,
Taeyo's ASP사이트에서 정보를 찾아가며 게시판 만들어 본 것 같습니다.
 그 다음에 JSP, Servlet을 알게 되고, MVC를 분리하여 개발하면 훨씬 코드가 깔끔해 진다는 것을 알게 되었죠.

이제 시간이 많이 흐르고, 기술도 많이 발전해서..
지금은 Ruby on Rails로 웹개발을 하고 있습니다.

Rails


물론, 포켓스타일 서비스도 웹 부분은 모두 Ruby on Rails로 되어 있습니다.
앞으로 이 블로그를 통해서,
Ruby on Rails에 대한 기술적인 부분도 조금씩 소개를 드리려고 합니다.

우선 Ruby on Rails를 공부하는데 유용할 만한 자료들을 알려드리도록 하겠습니다.

1. 루비 언어에 대해서 조금 배워야 합니다. 그렇다고 해서 루비 언어 모두를 알아야 시작할 수 있는 것은 아니니, http://www.ruby-lang.org/ko/ 사이트에서 루비 20분 가이드를 학습하시고, Ruby on Rails를 시작하면 좋을 것 같습니다.

2. 책을 추천해 드립니다. http://www.pragprog.com/titles/rails2/agile-web-development-with-rails
Agile Web Developement with Rails 인데, 한글책 http://www.yes24.com/24/goods/2381549?scode=032&srank=1 도 있습니다만, Ruby on Rails가 빠르게 버전업이 되어서, 한글책을 사시면 버전문제로 조금 고생하실 수 있습니다. 그래도 영어가 꺼려지시는 분은 한글책으로 공부하시는 것도 좋을것 같아요. 버전이 변해도 큰 맥락은 유지되고 있습니다.

3. 레일즈캐스트 http://railscasts.com/

Railscasts

그야말로 문서로 배울 수 없는 여러가지 테크닉들을 배울수 있는 Ruby on Rails 학습에 최고로 도움이 되는 사이트입니다. 시간이 되신다면 3년전부터 업로드된 1편부터 지금까지의 모든 스크린캐스트를 보실 것을 추천드립니다.

4. 레일즈랩 http://railslab.newrelic.com/
튜닝, 캐쉬, 대용량화등의 여러가지 고급 기술들을 다룹니다. 스크린 캐스트가 약 20개 정도 올라와 있습니다. 약간의 고급(?) 기술을 익히시고자 하신다면.. 실제로 Ruby on Rails로 개발된 서비스를 운영하신다면, 시간내서 한번 보시길 권해드립니다. 실제상황에 적용할 수 있는 유용한 정보가 많이 있습니다.

5. 루비 툴 박스 http://www.ruby-toolbox.com/
루비, 루비 온 레일즈의 큰 장점중에 하나가 조각 코드, 플러그인으로 gem을 제공하는데, 유용한 것이 아주 많습니다. 루비 툴 박스 사이트에 가시면, 분야별 인기 있는 gem을 찾으실 수 있습니다.

여기까지 적고 나머지는 다음에 또 소개해 드릴께요.

공부하시다가 좋은 것을 아시면 저희에게도 공유해 주세요.^^


Posted by thinkreals