Ответ вслух Senior gRPC, SOAP и другие протоколы обновлено

Кейс: интеграция с SOAP-сервисом банка-партнёра

Вопрос

Ваш сервис на REST и JSON должен проверять клиентов через SOAP-сервис банка-партнёра. Сервис банка отвечает до 20 секунд и иногда недоступен. Как спроектируешь интеграцию?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Основные сервисы не должны знать про SOAP, поэтому делаю отдельный адаптер: он принимает наш внутренний запрос, строит SOAP-сообщение по WSDL банка и возвращает ответ в нашей модели. Описываю маппинг полей и кодов ошибок банка в наши коды.

Что должно прозвучать в ответе

  • Адаптер или интеграционный слой, который скрывает SOAP от основных сервисов

  • Маппинг XSD-типов в свою модель, словарь соответствия полей и кодов ошибок

  • Асинхронный вызов: заявка получает статус «на проверке», результат приходит позже

  • Таймауты, повторы с задержкой, circuit breaker, очередь запросов

  • Логи запросов и ответов без ПДн, мониторинг доли ошибок и времени

Что могут спросить следом

  • Что видит пользователь, пока банк не ответил?
  • Как тестировать без доступа к продакшен-стенду банка?

Разбор

Основные сервисы не должны знать про SOAP, поэтому делаю отдельный адаптер: он принимает наш внутренний запрос, строит SOAP-сообщение по WSDL банка и возвращает ответ в нашей модели. Описываю маппинг полей и кодов ошибок банка в наши коды. Из-за 20 секунд и недоступности вызов делаю асинхронным: заявка переходит в статус «на проверке», адаптер берёт задачу из очереди, вызывает банк с таймаутом, при сбое повторяет с растущей задержкой, а при частых сбоях circuit breaker приостанавливает вызовы. Результат приходит событием, заявка меняет статус, пользователь видит понятное «проверяем данные». Для тестов поднимаем заглушку по WSDL, логируем обмен без персональных данных и мониторим время и ошибки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.