Sobes.tech
Назад к вопросам
Middle+
3

Вы системный аналитик АС Открытие счета ЮЛ по ведению счетов. Поступила задача от бизнес заказчика: реализовать сервис открытия счета. Сервис открытия включает в себя создание договора и резервирование счета. При открытии счета успешно создался договор клиента (сохранился в БД), Сервис резервирования вернул техническую ошибку. Какие требования, как аналитик АС Открытие счета ЮЛ предъявите ФП Договор и ФП Резервирование? Варианты реализации интеграционного сценария, учитывая распределенную микро сервисную архитектуру.

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В условиях распределённой микросервисной архитектуры при реализации сервиса открытия счета с двумя ключевыми операциями — созданием договора и резервированием счета — необходимо учитывать вопросы согласованности и обработки ошибок.

Требования к ФП Договор:

  • Обеспечить атомарность операции создания договора с точки зрения локальной БД (транзакция).
  • Предусмотреть возможность отката или компенсации в случае ошибок на последующих шагах (например, если резервирование счета не удалось).
  • Логировать статус создания договора и результат взаимодействия с сервисом резервирования.

Требования к ФП Резервирование:

  • Обеспечить идемпотентность операций резервирования счета.
  • Возвращать детализированные ошибки с кодами и описаниями для корректной обработки.
  • Поддерживать возможность компенсации (отмена резервирования) в случае отката.

Варианты реализации интеграционного сценария:

  1. Оркестрация с использованием саги:

    • Сервис открытия счета инициирует создание договора.
    • После успешного создания договора вызывается сервис резервирования.
    • Если резервирование завершается ошибкой, запускается компенсирующая транзакция — удаление или аннулирование договора.
    • Такой подход требует реализации механизма саги и управления состояниями.
  2. Хореография через события:

    • Сервис создания договора публикует событие "Договор создан".
    • Сервис резервирования подписывается на это событие и пытается зарезервировать счет.
    • В случае ошибки сервис резервирования публикует событие "Ошибка резервирования".
    • Сервис договора реагирует на это событие, выполняя компенсирующие действия.
  3. Транзакции с двухфазным коммитом (2PC):

    • В распределённых системах редко применяется из-за сложности и производительности, но возможен при наличии поддержки.
  4. Использование очередей и повторных попыток:

    • При ошибке резервирования запрос помещается в очередь на повторную обработку.
    • Если после нескольких попыток ошибка сохраняется, инициируется компенсация.

В итоге, как аналитик, необходимо чётко прописать требования по обработке ошибок, идемпотентности, компенсации и логированию, а также согласовать с командами реализации подход к интеграции (саги, события, очереди).