В чем разница между сервисом и микросервисом?

«В чем разница между сервисом и микросервисом?» — вопрос из категории Архитектура, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сервис — это общий термин для компонента, который предоставляет чётко определённую функциональность через API (например, сервис отправки email или расчёта налогов). Он может быть частью монолитной архитектуры.

Микросервис — это архитектурный стиль, где приложение состоит из множества небольших, независимо развёртываемых сервисов, каждый из которых:

  1. Инкапсулирует свою бизнес-домен (например, «Пользователи», «Заказы», «Оплата»).
  2. Имеет собственную базу данных, не разделяемую напрямую с другими сервисами.
  3. Общается через лёгкие механизмы (чаще HTTP/REST, gRPC, асинхронные сообщения).
  4. Может быть разработан на независимом технологическом стеке.

Пример сравнения:

  • В монолите: Класс OrderService вызывает метод EmailSender::send() внутри того же процесса.
  • В микросервисах: Сервис orders публикует событие OrderCreated в брокер сообщений (например, RabbitMQ), а независимый сервис notifications подписывается на это событие и отправляет email.

Главное отличие: Микросервис — это сервис, построенный по принципам слабой связанности и высокой автономности, что позволяет независимое масштабирование, развёртывание и отказоустойчивость.