Пожалуйста, скажите мне, если:
- Node.js сделает наш сайт быстрее!
- Node.js будет потреблять меньше ресурсов сервера, мы можем сэкономить деньги!
- Node.js сделает нас более продуктивными!
- Node.js означает, что мы можем совместно использовать клиентский и серверный JavaScript-код.
Для пояснения мы переписываем интерфейсный сервер, который будет взаимодействовать с нашим существующим приложением Ruby on Rails в качестве API. Тем временем мы реорганизуем наше приложение Ruby on Rails в сервисы.
Подробнее о существующей архитектуре:
- Memcached для кэширования HTML-частей
- Redis для сессии, и некоторые структурированные данные кэширования
- MySQL один мастер, несколько рабов
- Есть одна большая таблица, которая принимает много записей (представьте опрос)
- В противном случае в основном читает.
- MongoDB для некоторых метаданных
- Ruby on Rails 3.0
- nginx и единорог
architecture
ruby-on-rails
node.js
rewrite
user88487
источник
источник
Ответы:
Большинство вопросов, которые вы задаете, не отвечают без контекста и более или менее спорны, учитывая, что руководство уже сделало выбор за вами ... если только вы не спрашиваете "Должен ли я уйти и найти новую работу перед лицом всех этих изменений" ?
Если вы собираетесь с этим справиться, я рекомендую вам прочитать этот пост на тему: Как выжить с нуля, не теряя здравомыслия .
Недавно я начал переписывать немного серверной логики в node.js. Основная причина в том, что он в настоящее время написан на .NET, и мы хотим перейти от сред MS к следующему.
Мой опыт до сих пор был положительным, у вас будет начальная кривая обучения со всей ее неблокируемостью, но как только вы пройдете мимо этого, на самом деле довольно интересно писать код… Я знаю, ФАН!
Тем не менее, у него есть и темная сторона: каждый мужчина и его собака, которые занимались разработкой интерфейса с помощью JavaScript - и это будет каждый разработчик интерфейса - надеюсь, - немного волнуются, когда вы упоминаете, что node.js - это javascript на стороне сервера. Однако это не означает, что разработчики внешнего интерфейса будут иметь опыт, необходимый для написания хороших серверных приложений.
Одна вещь, которую вы должны учитывать, это то, что фатальная ошибка повредит все приложение из-за его непоточной природы, поэтому ставки немного выше, и вы должны явно проверить и поймать все.
Для тех, кто занимался как спереди, так и сзади - и получал удовольствие от обоих - отсутствие необходимости переключать ментальные контексты с языков на передний план на конечный - это реальный бонус, который, я думаю, в конечном итоге повысит производительность нашей команды в будущем.
источник
Ну, я не думаю, что переписывание приложения было хорошей идеей, если оно не работало плохо. Чтобы ответить на ваши вопросы:
Node.js не волшебство. В вашем приложении огромное количество пользователей, поэтому невозможно быть уверенным, что оно будет работать быстрее.
Да, Node.js на самом деле потребляет меньше ресурсов сервера. Таким образом, вы можете не только сэкономить деньги на ресурсах, но и сделать больше с существующими. Это в основном из-за однопоточной природы Node.js. Нет дополнительных накладных расходов на дополнительные потоки.
Снова Node.js не волшебство. Сказав это, в этом может быть доля правды. Node.js имеет очень активное сообщество, которое создало сотни модулей для каждой возможной задачи. Поэтому вполне вероятно, что большая часть работы была проделана за вас. Вам просто нужно собрать кусочки вместе.
Теоретически да. Поскольку Node.js - это JavaScript, вы можете делиться кодом между клиентом и сервером. Но я не знаю точно, что это будет, что поделится. Я не написал ни одного кода, который можно было бы повторно использовать на клиенте. То, что мы делаем на сервере, обычно не имеет ничего общего с клиентом. Более важным для меня является отсутствие переключения контекста. Мне проще писать код на клиенте и сервере на одном языке.
Поскольку Node.js является однопоточным, если он явно не настроен для этого, он не может использовать преимущества нескольких процессоров .
Посмотрите на комментарии тоже. Они дают некоторое хорошее представление о работе Node.js.
источник