System Design

System Design


1.

В компании есть несколько внутренних приложений, например биллинг, CRM и веб-портал, которым нужно работать с внешним эквайером: принимать платежи, делать возвраты, проверять статусы и получать чеки.

Нужно спроектировать единый интеграционный сервис, через который внутренние системы будут взаимодействовать с внешними эквайерами, например Сбербанком, ЮKassa и другими. В дальнейшем система должна поддерживать подключение сразу нескольких эквайеров.

Функциональные требования:

  • генерация ссылки на оплату с автоматическим выбором эквайринга
  • информирование систем-потребителей об изменении статуса платежа
  • передача чека в системы-потребители

Требуется подготовить краткое описание или документ, в котором нужно:

  1. описать ключевые компоненты архитектуры сервиса
  2. продумать взаимодействие внутренних сервисов с интеграционной прослойкой
  3. описать API-контракт между внутренними системами и прослойкой
  4. описать взаимодействие прослойки с внешним эквайером, включая вебхуки, подписи и другие аспекты
  5. определить, какие данные нужно хранить и зачем
  6. предложить механизм обработки ошибок, таймаутов, повторов и защиты от дублей
  7. показать, как архитектура будет расширяться под новых эквайеров
  8. продумать безопасность: аутентификацию, защиту от подмены, шифрование и другое
  9. описать мониторинг сервиса 10 .перечислить возможные риски и ограничения на старте