Size: a a a

Node.js — русскоговорящее сообщество

2020 September 26

П

Павел in Node.js — русскоговорящее сообщество
Андрей
Всем привет. Подскажите по микросервисной архитектуре. У нас тяжелый проект на php + vue, сейчас есть задачка, связанная с большим кол-вом мелких put с фронта на бэк. Решил поднять микросервис на nodejs + mongodb (или может редис? нужны быстрые insert). Возможно после этого мы начнем чаще пихать новые фичи в микросервисы.
Как полагаю, надо выделить директорию для микросервисов, создать там первый сервис gateway, на который проксировать запросы через nginx. А этот gateway уже будет делегировать микросервисам?
Подскажите, кто что знает, как не запутаться, как использовать переменные окружения, нужен ли сейчас сразу rabbitmq и т. д.? Спасибо!
Ну это зависит от типа проекта, если проект тяжелый, то лучше разделить его на микро-сервисы, пусть будет даже одна база данных, хотя я бы взял pg вместо mongodb. Но лучше оптимизировать эти put запросы, если они не требуют моментального ответа. Ну а если это какой нить Laravel, то всё круто же. Ты берёшь и делаешь queue job задачу в самом laravel или через redis отправляешь его в работу на nodejs и моментально отдаёшь ответ клиенту, тем самым разгрузив систему.
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Андрей
Всем привет. Подскажите по микросервисной архитектуре. У нас тяжелый проект на php + vue, сейчас есть задачка, связанная с большим кол-вом мелких put с фронта на бэк. Решил поднять микросервис на nodejs + mongodb (или может редис? нужны быстрые insert). Возможно после этого мы начнем чаще пихать новые фичи в микросервисы.
Как полагаю, надо выделить директорию для микросервисов, создать там первый сервис gateway, на который проксировать запросы через nginx. А этот gateway уже будет делегировать микросервисам?
Подскажите, кто что знает, как не запутаться, как использовать переменные окружения, нужен ли сейчас сразу rabbitmq и т. д.? Спасибо!
Проект этот обычный crud?
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Или необходимость выделить микросервисы не обсуждается, а нужно просто подсказать как это сделать?
источник

А

Андрей in Node.js — русскоговорящее сообщество
Павел
Ну это зависит от типа проекта, если проект тяжелый, то лучше разделить его на микро-сервисы, пусть будет даже одна база данных, хотя я бы взял pg вместо mongodb. Но лучше оптимизировать эти put запросы, если они не требуют моментального ответа. Ну а если это какой нить Laravel, то всё круто же. Ты берёшь и делаешь queue job задачу в самом laravel или через redis отправляешь его в работу на nodejs и моментально отдаёшь ответ клиенту, тем самым разгрузив систему.
Довольно тяжелый, еще и на yii2. Разделять, наверно, пока никто не захочет. В этой задачке много put запросов без ответа, просто json объекты без четкой структуры. Сегодня структура одна, завтра попросят что-то изменить, структура данных будет развиваться постепенно. Поэтому решил выделить в отдельный сервис, и по тестам производительности у mongo очень быстрые инсерты
источник

А

Андрей in Node.js — русскоговорящее сообщество
Dmitry
Тогда найдите сениора или архитектора который потянет такой проект. Или сами развивайтесь до такого уровня
Будем развиваться))
источник

П

Павел in Node.js — русскоговорящее сообщество
Андрей
Довольно тяжелый, еще и на yii2. Разделять, наверно, пока никто не захочет. В этой задачке много put запросов без ответа, просто json объекты без четкой структуры. Сегодня структура одна, завтра попросят что-то изменить, структура данных будет развиваться постепенно. Поэтому решил выделить в отдельный сервис, и по тестам производительности у mongo очень быстрые инсерты
делай тогда queue задачу без микро-сервисов, если ответа нету оно тебе очень сильно подходит, монго по конф из highload уступает pg (в который можно поместить ваш json обьект)
источник

А

Андрей in Node.js — русскоговорящее сообщество
John Doe
Проект этот обычный crud?
Если про основной проект, то там все уже сложнее, около 250 конечных точек api
источник

П

Павел in Node.js — русскоговорящее сообщество
Андрей
Если про основной проект, то там все уже сложнее, около 250 конечных точек api
А по поводу переписывание проекта, а стоит ли? yii2 хороший фрейм и если работает то не трогай.
источник

А

Андрей in Node.js — русскоговорящее сообщество
John Doe
Или необходимость выделить микросервисы не обсуждается, а нужно просто подсказать как это сделать?
Да, нужно идти в ногу со временем, и развиваться не только заказчикам, но и исполнителям)))
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Андрей
Если про основной проект, то там все уже сложнее, около 250 конечных точек api
Если это crud, то мне кажется сначала стоит с базой поиграться. Потому что микросервисы при работе с одной базой увеличат нагрузку на базу, и никакого прироста в производительности для пользователя не дадут
источник

А

Андрей in Node.js — русскоговорящее сообщество
Павел
делай тогда queue задачу без микро-сервисов, если ответа нету оно тебе очень сильно подходит, монго по конф из highload уступает pg (в который можно поместить ваш json обьект)
Там уже много queue, иногда очередь скапливается на десятки секунд.
источник

А

Андрей in Node.js — русскоговорящее сообщество
Павел
А по поводу переписывание проекта, а стоит ли? yii2 хороший фрейм и если работает то не трогай.
Проект не переписываем, просто отдельный сервис. В связи с чем вопрос по архитектуре, у кого как, кто как делает
источник

А

Андрей in Node.js — русскоговорящее сообщество
John Doe
Если это crud, то мне кажется сначала стоит с базой поиграться. Потому что микросервисы при работе с одной базой увеличат нагрузку на базу, и никакого прироста в производительности для пользователя не дадут
База у микросервиса будет отдельная
источник

А

Андрей in Node.js — русскоговорящее сообщество
В общем вопрос такой - если у кого в проектах есть микросервисы, подскажите, как устроены)
источник

П

Павел in Node.js — русскоговорящее сообщество
Андрей
Там уже много queue, иногда очередь скапливается на десятки секунд.
не думаю что nodejs поможет в этом вопросе. (зависит очень сильно от реализации и размещения)

-
Если вы работаете с такими данными разных структур и хотите ноду

Вам нужна serverless и aws lambda
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Андрей
База у микросервиса будет отдельная
Окей. Тогда могу посоветовать посмотреть паттерны saga и 2pc, возможно помогут разобраться с проблемой общения микросервисов
источник

П

Павел in Node.js — русскоговорящее сообщество
Андрей
Там уже много queue, иногда очередь скапливается на десятки секунд.
https://www.youtube.com/watch?v=FOCDEk-OLTI&ab_channel=HolyJS

Может поможет с выбором
YouTube
Николай Матвиенко — Обработка озера данных на Node.js в serverless-архитектуре
Ближайшая конференция — HolyJS 2020 Moscow
25-28 ноября, Online
Подробности и билеты: https://holyjs-moscow.ru/

. Serverless — это не только про легковесный код. С этим подходом можно организовать и обработку огромных объемов данных, главное, правильно организовать архитектуру. Технические детали и реальные подходы в решении нетривиальных задач — вы можете с таким не столкнуться, но это определенно интересный опыт.

Мы рассмотрим процесс обработки озера данных с помощью облачных функций AWS Lambda на Node.js: от выбора применяемых архитектурных облачных паттернов до углубления в оптимизации лямбда-функций на Node.js. Выявим и используем сильные стороны Node.js для ускорения обработки данных. Исследуем увеличение пропускной способности с помощью масштабирования до 7000 экземпляров лямбда-функций и используемых сервисов (стримов, очередей и баз данных), тюнинга и оптимизаций лямбда-функций на Node.js и выбора оптимальных протоколов передачи данных. Рассмотрим особенности профилирования функций, логирования и мониторинга…
источник

А

Андрей in Node.js — русскоговорящее сообщество
John Doe
Окей. Тогда могу посоветовать посмотреть паттерны saga и 2pc, возможно помогут разобраться с проблемой общения микросервисов
Спасибо, сейчас поищу.
источник

А

Андрей in Node.js — русскоговорящее сообщество
Павел
https://www.youtube.com/watch?v=FOCDEk-OLTI&ab_channel=HolyJS

Может поможет с выбором
YouTube
Николай Матвиенко — Обработка озера данных на Node.js в serverless-архитектуре
Ближайшая конференция — HolyJS 2020 Moscow
25-28 ноября, Online
Подробности и билеты: https://holyjs-moscow.ru/

. Serverless — это не только про легковесный код. С этим подходом можно организовать и обработку огромных объемов данных, главное, правильно организовать архитектуру. Технические детали и реальные подходы в решении нетривиальных задач — вы можете с таким не столкнуться, но это определенно интересный опыт.

Мы рассмотрим процесс обработки озера данных с помощью облачных функций AWS Lambda на Node.js: от выбора применяемых архитектурных облачных паттернов до углубления в оптимизации лямбда-функций на Node.js. Выявим и используем сильные стороны Node.js для ускорения обработки данных. Исследуем увеличение пропускной способности с помощью масштабирования до 7000 экземпляров лямбда-функций и используемых сервисов (стримов, очередей и баз данных), тюнинга и оптимизаций лямбда-функций на Node.js и выбора оптимальных протоколов передачи данных. Рассмотрим особенности профилирования функций, логирования и мониторинга…
Спасибо, гляну
источник
2020 September 27

G~

Gleb ~ in Node.js — русскоговорящее сообщество
Artem Zuev
Это из области - есть дом, построен в принципе добротно и на века и можно жить, но как-то так сложилось, что намешана куча стилей и подходов ))) и вот подтекает в одном углу при ливне и надо что-то придумать... Но никто не даст дом перестроить...
Это как раз то, о чем говорит дядя Боб. Плохая архитектура делает развитие приложения с некоторого момента невероятно сложным и деливер простых фич превращается в ад
источник