Следует ли считать микросервисами небольшие сущности, такие как страны/регионы и университеты?

Следует ли считать микросервисами небольшие сущности, такие как страны/регионы и университеты?
Следует ли считать микросервисами небольшие сущности, такие как страны/регионы и университеты? - growtika @ Unsplash

ИМХО, такое деление кажется излишним

Это не означает, что это невозможно сделать, но это потребует слишком много работы.

Во-первых, это похоже на антипаттерн Entity Services, ведущий к анемичным сервисам. На производительность действительно повлияет анализ большого количества сообщений и сетевое взаимодействие. Даже если один микросервис является источником правды, вам все равно придется копировать (или кэшировать) локальные данные в каждый микросервис. Если вы чувствуете, что тратите слишком много кода на службы и клиенты Rest вместо того, чтобы выполнять логику, это может быть так. Кроме того, как любой микросервис обработает один из них со сбоем?

Есть некоторые силы, которые приводят вас к более распределенной или концентрированной архитектуре.

Чтобы разделить на большее количество микросервисов:

  • Различные потребности в эскалации
  • Различные требования безопасности
  • Разные команды разрабатывают
  • Возможность отказа без ущерба для других служб
  • ...

Присоединиться

  • Необходимо выполнить транзакции.
  • Сплоченность кода (например, страна и провинция)
  • Зависимость от времени
  • ...

Я не вижу никакой силы, которая заставляет вас использовать отдельные микросервисы. Хороший архитектор принимает решения, исходя из потребностей. Есть несколько альтернатив:

  • Используйте модульный монолит, который можно разделить на микросервисы.
  • Если вы действительно пытаетесь кодировать новый LinkedIn, вы можете разделить использование, сосредоточив внимание на поддоменах. Нравиться:
    • Микросервис, который обрабатывает веб-страницу-кандидата
    • Микросервис, который обрабатывает веб-страницу компании
    • Общий микросервис для офферов
  • В некоторых случаях может работать обычная библиотека с жестко запрограммированными данными (страны и провинции не сильно меняются).
  • Сервисно-ориентированная архитектура с общей базой данных позволит вам поддерживать связь «один ко многим» с внешними ключами.

Нет ни одной хорошей архитектуры. Просто идите на компромиссы, даже если некоторые из них скоро станут явно слишком дорогими.

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

Прикрепленное видео 1 - Микросервисы, Монолит и Зомби: онлайн-дебаты от Яндекс.Практикума

Прикрепленное видео 2 - "Microservices. Как правильно делать и когда применять?", Вячеслав Михайлов


LetsCodeIt, 17 января 2023 г., 22:01