Кейс: интеграция с SOAP-сервисом банка-партнёра
Вопрос
Ваш сервис на REST и JSON должен проверять клиентов через SOAP-сервис банка-партнёра. Сервис банка отвечает до 20 секунд и иногда недоступен. Как спроектируешь интеграцию?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Адаптер или интеграционный слой, который скрывает SOAP от основных сервисов
Маппинг XSD-типов в свою модель, словарь соответствия полей и кодов ошибок
Асинхронный вызов: заявка получает статус «на проверке», результат приходит позже
Таймауты, повторы с задержкой, circuit breaker, очередь запросов
Логи запросов и ответов без ПДн, мониторинг доли ошибок и времени
Что могут спросить следом
- Что видит пользователь, пока банк не ответил?
- Как тестировать без доступа к продакшен-стенду банка?
Разбор
Основные сервисы не должны знать про SOAP, поэтому делаю отдельный адаптер: он принимает наш внутренний запрос, строит SOAP-сообщение по WSDL банка и возвращает ответ в нашей модели. Описываю маппинг полей и кодов ошибок банка в наши коды. Из-за 20 секунд и недоступности вызов делаю асинхронным: заявка переходит в статус «на проверке», адаптер берёт задачу из очереди, вызывает банк с таймаутом, при сбое повторяет с растущей задержкой, а при частых сбоях circuit breaker приостанавливает вызовы. Результат приходит событием, заявка меняет статус, пользователь видит понятное «проверяем данные». Для тестов поднимаем заглушку по WSDL, логируем обмен без персональных данных и мониторим время и ошибки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.