Ответ
Сервис — это общий термин для компонента, который предоставляет чётко определённую функциональность через API (например, сервис отправки email или расчёта налогов). Он может быть частью монолитной архитектуры.
Микросервис — это архитектурный стиль, где приложение состоит из множества небольших, независимо развёртываемых сервисов, каждый из которых:
- Инкапсулирует свою бизнес-домен (например, «Пользователи», «Заказы», «Оплата»).
- Имеет собственную базу данных, не разделяемую напрямую с другими сервисами.
- Общается через лёгкие механизмы (чаще HTTP/REST, gRPC, асинхронные сообщения).
- Может быть разработан на независимом технологическом стеке.
Пример сравнения:
- В монолите: Класс
OrderServiceвызывает методEmailSender::send()внутри того же процесса. - В микросервисах: Сервис
ordersпубликует событиеOrderCreatedв брокер сообщений (например, RabbitMQ), а независимый сервисnotificationsподписывается на это событие и отправляет email.
Главное отличие: Микросервис — это сервис, построенный по принципам слабой связанности и высокой автономности, что позволяет независимое масштабирование, развёртывание и отказоустойчивость.