Что такое SOAP?

«Что такое SOAP?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOAP (Simple Object Access Protocol) — это XML-протокол для обмена структурированными сообщениями между веб-сервисами. В DevOps-контексте мы часто сталкиваемся с ним при интеграции legacy-систем, корпоративных сервисов или в сценариях, требующих строгой стандартизации и транзакционности.

С точки зрения эксплуатации и автоматизации:

  • WSDL (Web Services Description Language) используется для автоматической генерации клиентского кода и документации интерфейса.
  • Передача обычно происходит по HTTP/HTTPS, что упрощает мониторинг и балансировку нагрузки стандартными инструментами (Nginx, HAProxy).
  • WS-Security добавляет сложность, но обеспечивает встроенную безопасность на уровне сообщения, что может быть требованием в регулируемых отраслях.

Пример типичного SOAP-запроса, который может проходить через наши прокси:

POST /ws/UserService HTTP/1.1
Host: api.example.com
Content-Type: application/soap+xml; charset=utf-8

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <GetUserRequest xmlns="https://example.org/service">
      <UserId>123</UserId>
    </GetUserRequest>
  </soap:Body>
</soap:Envelope>

Практические аспекты для DevOps:

  • Мониторинг: Сложнее, чем для REST, из-за XML и SOAP-конвертов. Часто требуется парсинг тела запроса для сбора метрик.
  • Отладка: Запросы и ответы объемные, для траблшутинга полезны инструменты вроде tcpdump или специализированные прокси (SoapUI).
  • Сравнение с REST: SOAP более «тяжелый» и строгий. В современных микросервисных архитектурах REST/gRPC встречаются чаще, но SOAP остается в крупных корпоративных и банковских системах, где его инфраструктуру нам приходится поддерживать.