Перейти к содержанию

Микросервисы

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

Плюсы:

  1. Гибкость и масштабируемость. Каждый сервис может быть разработан и масштабирован независимо.
  2. Меньше рисков при обновлении. При обновлении одного микросервиса другие сервисы могут продолжать работу нормально, что минимизирует риск простоя всего приложения.
  3. Упрощение разработки. Разработка небольших сервисов проще и понятнее, чем сложных и монолитных приложений. При разработке разных сервисов можно применять разный стек.
  4. Лучшая отказоустойчивость. Каждый сервис работает как независимая сущность.

Минусы: 1. Сложность тестирования, интеграции и мониторинга. 2. Сложность развертывания. 3. Необходимость согласованности между сервисами.

Способы общения

По способу общения сервисы деляться на синхронные и асинхронные.

Синхронные

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

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

Такие микросервисы можно построить при помощи REST, gRPC, SOAP и других принципов.

Асинхронные

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

Пример использования асинхронных микросервисов может быть система обработки заказов в интернет-магазине. Если в процессе обработки заказа возникают проблемы, такие как недостаточно товара на складе, микросервис заказа отправляет сообщение в микросервис инвентаризации. Этот микросервис обрабатывает сообщение, возвращает результат и отправляет его в микросервис заказа. В то время как микросервисы-консьюмеры обрабатывают сообщения, микросервис заказа может продолжать работу по обработке заказа и не ждать ответа от микросервиса инвентаризации.

Такие микросервисы можно построить например при помощи месседжинга, используя например Apache Kafka или RabbitMQ.

Ссылки