Какая архитектура лучше с точки зрения производительности и масштабируемости?
Сразу: понятно что для каждого проекта нужна своя архитектура и не бывает шаблонов, когда речь заходит про хайлоад.
Часто бывают решения в виде разделения серверов на front (для рэндеринга страниц) и back (для API). В моем случае разработка на node в режиме кластера с баллансировщиком на nginx. Каждый воркер ноды предоставляет и АПИ часть и рэндеринг страницы и вроде бы это должно быть хорошо, т.к. в ноде io ассинхронный. За счет того, что все сервера идентичны - их просто масштабировать и деплойтить (можно в итоге оставить 2 сервера и по одному отключать с разделенной архитектурой нужно 4). И мой вопрос в том, что используя другую архитектуру с разделением на АПИ сервера на ноде и сервера под фронт (допустим на apache+php) можно что-то выиграть? Интересно, может кто-то тэстировал производительность рэндеринга ноды против apache+php.
PS - Отказываться от серверного рэндеринга и уходить на ангуляр 2 (например) не вариант.
Что дешевле, запросить сервер который генерит фронт, который запросит АПИ, или просто запросить АПИ? Что Angular, что React, что Vue поддерживают серверсайд рендеринг, и пользователь при заходе на сайт вполне может получить отрендеренную страницу, а дальше грузить только АПИ.
Рэндерить ангуляр это уж совсем... Для меня он и удобен тем что рэндириться на клиенте и отдавать его можно как статику через nginx. Вопрос не в том как рэндерить страницу, а в том не сильно ли это тормозит тачку с АПИ и есть ли смысл выделять под front еще 2 машины
achuraev,
1) https://universal.angular.io/ это на тот случай когда нет возможности отказаться от серверного рендера.
Страница рендерится только когда отдается клиенту, дальше ангуляр работает как обычное SPA
2) Какая то путаница во вводных. У вас работает только серверный рендеринг или серверный рендеринг + запросы со страницы к АПИ. Если второе, то чем ваша архитектура отличается от любого фреймвока + SSR ?
3) Если вопрос только в том, как сильно нагружает текущая реализация рендеринга сервер, то почему бі вам не померять самому ?
Владимир,
3) Судя по всему все и идет к реализации второй архитектуры и проведению тестов для выбора оптимального варианта. Было интересно возможно кто-то с этим уже сталкивался и готов поделиться советами для сохранения времени.
1) С universal был опыт. Работает это в разы медленнее и имеет место быть, только для отдачи страницы поисковому роботу для индексации. В иных ситуациях это выстрел по комару из пушки.
2) Серверный рэндеринг работает и страница обращается к АПИ. Каждый запрос отрисовывает страницу, все действия идут через к АПИ через сокеты. Отличается это архитектурой системы.
ПС: не совсем понял как от вопроса про целесообразность смены архитектуры (о плюсах и минусах относительно текущей) мы перешли к обсуждению ангуляра. Мы не сравниваем сингл пэйдж и не сингл. Я пытаюсь понять, насколько плохо использовать рэндеринг прямо в том же аппликейшене на ноде вместе с АПИ, стоит ли разбивать сервера на фронт и бэк.