Микросервисы с зависимостью от общей библиотеки - PullRequest
1 голос
/ 19 марта 2020

Я работаю над микросервисным проектом, и у меня есть вопрос о лучших практиках.

Мы используем Java Spring, и все наши модели упакованы в один JAR. Каждый микросервис зависит от того, какой JAR функционирует. Можно ли микросервису полагаться на JAR-модели, находящиеся вне его области действия, например, или лучше разделить этот JAR-файл?

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Очень хорошая статья Бартоша Еджеевского здесь

Цитировать соответствующую часть из его статьи ...

Если код обслуживания должен быть полностью отдельно, но нам нужно потреблять, возможно, сложные ответы в клиентах - клиенты должны писать свои собственные библиотеки для использования сервиса.

Используя клиентские библиотеки для использования сервиса, достигаются следующие преимущества: Сервис полностью отделен от клиентов и никакие сервисы не зависят друг от друга - библиотека отдельная и клиент указывает c. Это может быть даже спецификация технологии c, если у нас есть смесь технологий. Выпуск новой версии сервиса не связан с клиентами - им может даже не понадобиться знать, есть ли обратная совместимость, это клиенты, которые поддерживают библиотеку

Клиенты теперь DRY - копирование кода не нужно. Более быстрая интеграция со службой - это достигается без потери каких-либо преимуществ микросервисов. Это решение не является чем-то совершенно новым - оно было успешно реализован в проектах Scott Logi c, рекомендуется Сэмом Ньюманом в «Построении микросервисов» (настоятельно рекомендуется), и подобные идеи можно увидеть во многих успешных архитектурах микросервисов.

Есть некоторые подводные камни, такие как ну, лучше прочитайте всю статью ...

1 голос
/ 20 марта 2020

Совместное использование моделей доменов является показателем плохого дизайна. Если сервисы совместно используют домен, они не должны быть разделены. Для микросервисов группы, работающие над одним сервисом, должны иметь возможность изменять свои доменные объекты в любое время, не влияя на другие сервисы / команды.

Однако могут быть сделаны исключения, например, если объекты модели не указаны c, достаточные для повторного использования в любом сервисе. В качестве примера область геометрии может содержаться в библиотеке геометрии. Могут быть и другие исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...