Действительно ли Ruby 1.9.1 готов и быстрее для нового развертывания Rails? - PullRequest
7 голосов
/ 07 февраля 2010

Я не собираюсь делать это в обсуждении Rails vs Framework X, их уже много. После серьезного размышления над тем, какую инфраструктуру я собираюсь использовать для моего следующего развертывания, я решил, что очень трудно отказаться от готового к использованию REST, которое Rails дает вам для минимальной работы. Это то, что требует немного больше работы в Django, и, учитывая, что я делаю основной упор на API-часть приложения, на этот раз Rails имеет больше смысла. Учитывая, как важно для меня написать приложение, содержащее разнородные клиенты (iphone / android / tablet), которые могут получать доступ (не только к веб-браузерам), я должен иметь возможность создавать API-интерфейсы RESTful с минимальным сопротивлением из любой среды, в которой я работаю использование.

Мой вопрос: готов ли Rails обрабатывать не приложение размером с Твиттер, а что-то, что делает примерно 75 000 уникальных хитов в день? Ruby 1.9.1 действительно улучшает вещи? Существует множество кошмарных историй и столько же успешных историй, в зависимости от того, кого вы спрашиваете. Джоэл Спольски (Joel Spolsky), один из основателей stackoverflow.com, считает, что сам Ruby просто не готов к прайм-тайм , потому что он все еще значительно медленнее, чем другие интерпретируемые языки. Я не беспокоюсь о размере Twitter (это проблема, которую я хотел бы иметь один день), но, с другой стороны, у меня есть сайт со средним числом 75 000 уникальных пользователей в день. Мне интересно, с какими проблемами масштабирования я столкнусь, решив использовать Ruby 1.9.1 + последние Rails (затраты на процессор + объем памяти) в качестве части моего стека API, вместо того, чтобы просто потратить время на то, чтобы сделать немного больше работать в Django для создания RESTful API. Как упоминает Джоэл в своей статье, я не хочу покупать 100 серверов, когда могу купить 10. Мне бы очень хотелось убедиться, почему Rails теперь готов удовлетворить мои требования.

Ответы [ 5 ]

6 голосов
/ 09 февраля 2010

Мы экспериментировали с 1.9 пару месяцев назад, и мы были настолько впечатлены улучшениями скорости, что практически сразу начали процесс перехода на нее. Единственными библиотеками, которые не работали без сбоев, были Facebooker, который один из наших разработчиков смог исправить за пару дней (плагин теперь полностью совместим с 1.9), и VPim (библиотека iCalendar), с которой мы смогли легко переключиться гораздо более новый плагин RiCal.

Rails 2.3 абсолютно готов к работе на 1.9, и, как показывает наш опыт, время запросов увеличилось более чем на 60%. Наши интеграционные тесты также получили такое же преимущество. У нас было 1200 тестов, на которых требовалось 300 секунд, и теперь требуется всего 110 секунд без каких-либо других изменений, кроме перехода с Ruby 1.8.7 на Ruby 1.9.1. Это также означает, что мы смогли удвоить объем нагрузки, который мог бы обрабатывать каждый из наших серверов.

Конечно, возможно, что вы используете драгоценный камень, который не совместим с 1.9, но подавляющее большинство из них совместимы или могут быть сделаны с небольшими изменениями.

У вас точно не будет проблем с 75 000 уникальных посетителей, и на одном сервере должно быть размещено приложение rails с трафиком, по крайней мере, в десять раз превышающим этот уровень, если ваше приложение написано очень плохо.

4 голосов
/ 09 февраля 2010

Пост Джоэла от ДВЕ ТЫСЯЧИ И ШЕСТЬ. Это ЧЕТЫРЕ года назад. К счастью, все изменилось :) Ruby 1.9 готов к прайм-тайм. Он совместим с Rails 2.3.5, а Rails 3 построен с учетом Ruby 1.9, поэтому он будет полностью совместим с ним.

"Мой вопрос, готов ли Rails к обрабатывать не приложение размером с Twitter, но то, что делает примерно 75 000 уникальные хиты в день? "

Это примерно то же самое, что спросить, думаете ли вы, что десять тысяч яиц помогут вам приготовить омлет не для города, а для семьи.

2 голосов
/ 07 февраля 2010

Вопрос не в том, готов ли Ruby 1.9 для Rails, а в том, готов ли Rails для Ruby 1.9. Из того, что я прочитал, похоже, что сам Rails (ActiveRecord и т. Д.) Хорошо работает на нем. У вас могут быть проблемы с любыми рубиновыми драгоценными камнями, которые вы можете использовать, но они не готовы 1.9. Проверьте http://isitruby19.com/, чтобы узнать, прокомментировал ли кто-нибудь конкретные камни, которые вы используете.

1 голос
/ 16 февраля 2010

У вас не должно быть проблем с Ruby 1.9.1; Я просто хотел поспорить с этим:

75 000 уникальных пользователей в день

Это точно ничего не значит. Мы не знаем, сколько запросов в секунду переводится на ваше приложение. Если вы на самом деле имеете в виду 75 000 запросов в день, это тривиально - это меньше, чем один запрос в секунду. Любая инфраструктура, которая не может гарантировать вам, что до того, как вы достигнете ограничений, налагаемых базой данных или архитектурой вашего приложения, возникнут большие проблемы, чем у платформы, на которой он работает:

1 голос
/ 09 февраля 2010

Мой вопрос: готов ли Rails к обрабатывать не приложение размером с Twitter, но то, что делает примерно 75 000 уникальные хиты в день?

Какой сервер вы используете? Что делает каждый запрос? Если вы работаете на одноядерном срезе 128 мегабайт, то, вероятно, нет.

Ruby 1.9.1 действительно намного быстрее, чем Ruby 1.8.X, и он также менее требователен к памяти. 1.9.2 не за горами, фактически, Rails 3 выполняет всю свою работу по разработке на транке 1.9.2.

На моем сервере я могу обрабатывать 80 тыс. Просмотров страниц в день, не потревожив и не применяя сложного кеширования. Если бы я создал интеллектуальное кеширование с помощью redis или memcached, я бы чувствовал себя комфортно, обслуживая в 10-20 раз больше.

Вы можете создавать великолепно работающие веб-приложения с Ruby и Rails (даже на REE 1.8.7). Вы можете создавать ужасно эффективные веб-приложения, написанные на C ++.

Если вы понимаете свою платформу и знаете, как ее оптимизировать, вы можете добиться высокой производительности.

Вероятно, я бы держался подальше от Ruby 1.9.1 (если вы не считаете себя экспертом по Ruby) исключительно из-за того, что несколько библиотек не работают и тот факт, что подавляющее большинство приложений Rails не работают на нем. Я попробовал 1.9.1 несколько недель назад и смог заставить мое приложение работать, но для этого потребовалось немного Ruby foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...