Выбор подхода для связи микросервисов

Выбор подхода для связи микросервисов
Выбор подхода для связи микросервисов - neonbrand @ Unsplash

Микросервисы — это не существительные

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

И совершенно нет смысла заниматься «наследованием микросервисов». Нет смысла иметь «микросервис пользователей» и «микросервис врачей», которые «наследует» от «пользователей».

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

Классическим примером микросервисов являются такие вещи, как биллинг, аутентификация, рекомендации. В основном они отдельные. Что-то отправляет счет в биллинговую систему, а затем биллинговая система проверяет, оплачивает ли пользователь свой счет. Пользователь входит в систему с помощью системы аутентификации, и теперь они вошли в систему. Возможно, каждой другой службе необходимо проверить, вошел ли пользователь в систему, но это все, что они должны делать с аутентификацией. Системе рекомендаций нужно знать, кто вместе какие товары купил, но рекомендации она рассчитывает сама. Есть точки соприкосновения, но каждая система в основном занимается своим делом. Биллинговой системе просто нужно знать, какой пользователь вошел в систему; ему не нужно знать, использовали ли они пароль или ключ безопасности.

Также обратите внимание, что микросервисы делают что-то. Биллинговая система занимается биллингом. Система аутентификации выполняет аутентификацию. Система рекомендаций рассчитывает рекомендации. Они не «управляют данными», что бы это ни было. Вы могли бы сказать, что биллинговая система «управляет платежными данными», но, конечно, логичнее было бы сказать, что она «выставляет счета»?

Итак, ваша система — это система здравоохранения, и я полагаю, что это не хирургический робот, поэтому очевидно, что система не может «заниматься здравоохранением», и ее цель — «управлять данными», чтобы помочь работникам здравоохранения «заниматься лечением» более эффективно.

Обратите внимание, что служба, которая только управляет данными, называется «базой данных» и обычно не считается микрослужбой.

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

Вывод: вам скорее всего не нужны микросервисы.

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Что такое микросервисы 👨‍💻 Основные принципы и паттерны

Прикрепленное видео 2 - Что такое Микросервисы, Объяснение от Мартина Фаулера


LetsCodeIt, 17 мая 2023 г., 01:04

Похожие посты

Я написал класс с методом "init". Должен ли я вызывать его из других методов класса? Или оставить это на усмотрение пользователя объекта? (Проектирование кода)Антипаттерн перечисления ошибок исключений в JavaБезопасно ли принимать и выполнять CURL-команды, предоставленные пользователем?Как управлять неизменяемыми объектами (в частности, записями Java)Можно ли сохранить все поля объекта в виде строки, если они не должны быть изменены?Дешевое, но эффективное решение для ведения журнала в частном API-интерфейсе микросервисов отдыхаВ системе, управляемой событиями, какова наилучшая практика в отношении количества событий и размера/атомарности?Правильное использование микросервисов внутри системыЧто делает микросервис микросервисом?Отношения «многие ко многим» в микросервисной архитектуре и правильно ли идентифицированы сервисы.