Вопрос проверяет понимание ключевых характеристик микросервисной архитектуры и умение отличать микросервис от просто «маленького сервиса».
Микросервис — это автономный сервис, который решает одну бизнес-задачу и может разрабатываться, разворачиваться и масштабироваться независимо от других. У него есть чёткий API и собственная зона ответственности. Он обычно владеет своими данными и не зависит напрямую от внутренних деталей других сервисов. Размер кода не является главным критерием микросервиса.
Чтобы корректно определить микросервис, важно смотреть не на технологию, а на архитектурные свойства.
Перед перечислением стоит отметить, что наличие REST или отдельного деплоя само по себе ещё не делает сервис микросервисом.
Автономность
независимый деплой
независимое масштабирование
минимальные зависимости от других сервисов
Чёткая зона ответственности
один сервис — одна бизнес-функция
отсутствие «размытой» логики
ясное назначение сервиса
Явный контракт взаимодействия
взаимодействие только через API
отсутствие прямого доступа к базе другого сервиса
стабильные интерфейсы
Микросервис, как правило:
владеет своей базой данных
не разделяет таблицы с другими сервисами
контролирует целостность данных внутри своих границ
Часто микросервис:
разрабатывается небольшой командой
имеет собственный цикл разработки и релизов
Микросервис — это прежде всего архитектурная и организационная единица, а не просто небольшой сервис или отдельный модуль.