на php + vue, сейчас есть задачка, связанная с большим кол-вом мелких put с фронта на бэк. Решил поднять микросервис на nodejs + mongodb (или может редис? нужны быстрые insert). Возможно после этого мы начнем чаще пихать новые фичи в микросервисы.
Как полагаю, надо выделить директорию для микросервисов, создать там первый сервис gateway, на который проксировать запросы через nginx. А этот gateway уже будет делегировать микросервисам?
Подскажите, кто что знает, как не запутаться, как использовать переменные окружения, нужен ли сейчас сразу rabbitmq и т. д.? Спасибо!
Не нужны вам микросервисы. Сделайте в монолите. Вы к ним не готовы. Больше головной боли будет
Блин, ну очень хочется))
Тогда найдите сениора или архитектора который потянет такой проект. Или сами развивайтесь до такого уровня
Ну это зависит от типа проекта, если проект тяжелый, то лучше разделить его на микро-сервисы, пусть будет даже одна база данных, хотя я бы взял pg вместо mongodb. Но лучше оптимизировать эти put запросы, если они не требуют моментального ответа. Ну а если это какой нить Laravel, то всё круто же. Ты берёшь и делаешь queue job задачу в самом laravel или через redis отправляешь его в работу на nodejs и моментально отдаёшь ответ клиенту, тем самым разгрузив систему.
Проект этот обычный crud?
Довольно тяжелый, еще и на yii2. Разделять, наверно, пока никто не захочет. В этой задачке много put запросов без ответа, просто json объекты без четкой структуры. Сегодня структура одна, завтра попросят что-то изменить, структура данных будет развиваться постепенно. Поэтому решил выделить в отдельный сервис, и по тестам производительности у mongo очень быстрые инсерты
Будем развиваться))
делай тогда queue задачу без микро-сервисов, если ответа нету оно тебе очень сильно подходит, монго по конф из highload уступает pg (в который можно поместить ваш json обьект)
Если про основной проект, то там все уже сложнее, около 250 конечных точек api
А по поводу переписывание проекта, а стоит ли? yii2 хороший фрейм и если работает то не трогай.
Если это crud, то мне кажется сначала стоит с базой поиграться. Потому что микросервисы при работе с одной базой увеличат нагрузку на базу, и никакого прироста в производительности для пользователя не дадут
Там уже много queue, иногда очередь скапливается на десятки секунд.
Проект не переписываем, просто отдельный сервис. В связи с чем вопрос по архитектуре, у кого как, кто как делает
База у микросервиса будет отдельная
не думаю что nodejs поможет в этом вопросе. (зависит очень сильно от реализации и размещения) - Если вы работаете с такими данными разных структур и хотите ноду Вам нужна serverless и aws lambda
Окей. Тогда могу посоветовать посмотреть паттерны saga и 2pc, возможно помогут разобраться с проблемой общения микросервисов
https://www.youtube.com/watch?v=FOCDEk-OLTI&ab_channel=HolyJS Может поможет с выбором
Спасибо, сейчас поищу.
Спасибо, гляну
Обсуждают сегодня