170 похожих чатов

Коллеги, помогите пожалуйста советом по микросервисам. К примеру у меня есть

модель которую я использую во всех микросервисах. Я копипастой дублирую ее в каждый микросервис.
Соответственно когда мне нужно эту модель поменять, мне нужно не забыть ее обновить в каждом микросервисе. Забыл поменять, не уследил, и где-то в результате возникла проблема.

Есть ли какая-нибудь магия(практика) которая как-то регулирует эту проблему?

8 ответов

7 просмотров

А почему, собственно, модель влияет на все микросервисы? Она откуда в эти микросервисы приходит? Общая БД? Или общий сервис, который эту модель в МСы передаёт? У Вас точно не распределенный монолит?

Vladislav-Zhuravskiy Автор вопроса
Andrew
А почему, собственно, модель влияет на все микросе...

В моем примере бекенд e-commerce приложения, модель Product, она используется в order-service, recommendation-service, statistics-service и т.п.

Vladislav-Zhuravskiy Автор вопроса
Andrew
А почему, собственно, модель влияет на все микросе...

Да, это скорее распределенный монолит

ну такое. самое правильное - так не делать. общая модель у разных микросервисов - это такое. чуть менее правильный вариант - это притащить какой-то условный open-api, генерить модели по нему. еще чуть менее - сделать чисто либу/проект с моделями и шарить между всеми, кому нужно. еще чуть менее - вытащить в микросервисе, в котором эта модель появилась изначально ее в под-модуль api и так же таскать как зависимость между остальными. совсем фиговый - оставить как есть и копипастить. все имхо

структуру сервисов нужно продумывать вместе со структурой команд (можешь посмотреть книжку эрика эванса по ддд, раздел про стратегическое проектирование) в твоём случае дублирование модели не является проблемой, проблемой является то что все сервисы пилит один человек и с его точки зрения это выглядит как повторение одной и той же работы, если бы каждый сервис был в зоне ответственности отдельного человека, это не было бы проблемой а наоборот было преимуществом в виде возможности нескольких людей вносить доработки независимо

Зависит от того, единый репозиторий для всех сервисов используется или нет. Если каждый сервис в своей репе, то будет сложно. Если все в одной репе, то можно выделить модель в отдельный модуль, у которого сделать подмодули для атомарных элементов модели. И потом добавлять в нужные микросервисы модулями зависимости к нужным кускам модели.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
10
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Комрады, подскажите, в дельфях есть компоненты а-ля TDirectorySelect?
Ed Doc
15
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Доброе утро! Не совсем понятно как установить счетчик яндекс метрики на сайт. И потом ещё цели проставить?
Евгения
18
Карта сайта