Как связать микросервисы

«Как связать микросервисы» — вопрос из категории Архитектура, который задают на 33% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Микросервисы можно связать несколькими способами, в зависимости от требований к производительности, согласованности и сложности:

  1. HTTP/REST API – простой и распространённый способ.
    Пример на Python (Flask):
    @app.route('/order', methods=['POST'])
    def create_order():
        response = requests.post('http://payment-service/pay', json=request.json)
        return response.json()
  1. Асинхронная коммуникация через брокеры сообщений (Kafka, RabbitMQ).
    Пример подписки на событие:
    def handle_payment_event(message):
        print(f"Payment processed: {message}")

    channel.basic_consume(queue='payments', on_message_callback=handle_payment_event)
  1. gRPC – для высоконагруженных систем с strict-контрактами.

  2. GraphQL – если нужна гибкость в запросах данных.

Выбор зависит от:

  • Скорости (gRPC > REST)
  • Надёжности (брокеры гарантируют доставку)
  • Сложности (REST проще для старта)

Для resilience важно добавить retry, circuit breakers (например, через Hystrix).