Как общаются сервисы в сервис-ориентированной архитектуре

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

Ответ

Сервисы в SOA общаются через стандартные протоколы, чаще всего HTTP/HTTPS с REST или SOAP, либо через брокеры сообщений (RabbitMQ, Kafka).

Пример REST API:

# Клиентский запрос к сервису пользователей
import requests

response = requests.get("https://user-service/api/users/123")
if response.status_code == 200:
    user_data = response.json()

Пример сообщения через RabbitMQ:

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='orders')
channel.basic_publish(exchange='', routing_key='orders', body='New order created')

Ключевые принципы:

  • Независимость сервисов
  • Стандартизированные интерфейсы
  • Асинхронная коммуникация (если нужна отказоустойчивость)
  • Возможность использования API-шлюзов для маршрутизации