Что почитать о создании микросервисов, в частности на Node.js?

Вроде бы определил зоны ответственности сервисов, пришло время это реализовать. В качестве среды выбрал Node.js, так как уже привык к JS, и сама платформа удобна.

Вопрос в том, правильно ли в моем понимании (на основе уже изученного материала, но не конкретно к Nodejs) следующее: поначалу все можно размещать на одном хосте, и лучше в различных Docker контейнерах. Коммуницировать их между собой через REST, хоть все и будет на одном хосте, но под разными портами, чтобы в дальнейшем можно было переносить на другие машины. Так как REST запросы более затратны, чем обычные вызовы в пределах среды выполнения, то что делать с аутентификацией? Как минимизировать нагрузку, учитывая возможное большое количество запросов для проверки того, можно ли пользователю/боту/сервису обратиться к какому-то сервису?

Монолит точно никак не подойдет, так как есть несколько задач, для выполнения которых просто Node.js не хватит, и приходится задействовать модули на С++. Например, один сервис должен хранить и обрабатывать 3D модели, а для этого кроме Node.js и БД нужны CGAL, Draco и т.д (а это все собирается на С++), и таким образом еще несколько других сервисов, и если это все собирать в одном окружении, то боюсь могут воз
никнуть проблемы из-за каких-то конфликтов версий или просто будет сложно выяснить в каком месте причина проблемы.

Что касается библиотек для создания микросервисов, нашел так называемый Hydra. Он не особо популярен, судя по звездам, хоть и много статей о нем. Попробовал, и пока не понял что он такого особенного делает (кроме как в Редис записывает данные), при том что в hello world используется тот же express, только еще куча "ненужного" кода сверху.

Seneca еще есть, но он не заточен под REST, хотя есть сторонние реализации (и судя по давно открытым issues, их забросили). И примеры его использования какие-то интуитивно непонятны.

Наверное, более надежным вариантом будет своя реализация работы с сервисами?
  • Вопрос задан
  • 1863 просмотра
Пригласить эксперта
Ответы на вопрос 2
lxfr
@lxfr
Докер может вам запускать что угодно во взаимодействии с чем угодно - питон с пыхом, C++ с ruby, mysql с чем угодно.

Делаете основной проект на своем языке, а все дополнительные сервисы подключаете через докер в той же экосистеме, в чем проблема?
Ответ написан
edli007
@edli007
full stack, team lead
Для общения между микросервисами в пределах одного сервера используют каналы редиса, это почти как веб сокеты, только без выхода в сеть.

Для снижения нагрузок вы можете вынести большую часть логики на фронт и вместо аджакс использовать веб сокеты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы