루비온레일즈는 XML, JSON API를 제공하기 쉽고, 아이폰을 비롯하여 멀티 디바이스에 대응하는 최적의 데이터 서버 운영환경입니다.
저희 씽크리얼스에서 지금까지 루비온레일스 서버를 운영하면서 얻은 노하우를 소개해드리려고 합니다.
1. 우선 서버는 Ubuntu Linux Server Edition 최신의 안정버전을 선택하실 것을 권장합니다. http://www.ubuntu.com/
그 이유는, ruby gem들이 system의 c 라이브버리를 활용하는데, 서버 버전마다 한글 문제 등의 처리가 조금 다를 수 있습니다. 저의 경험상으로는 Ubuntu Linux가 UTF-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 로 피드백주세요. 언제나 환영입니다.
'개발 > 루비온레일스' 카테고리의 다른 글
| 루비온레일즈 서버 운영 환경 ( Ruby on Rails Server Environment ) (0) | 2010/05/19 |
|---|---|
| 루비온레일즈 웹 개발 (2) | 2010/03/11 |



