Middle+
Ön egy rendszeranalitikus a jogi személyek számlanyitási szolgáltatásnál. Üzleti ügyféltől kapott feladat: számlanyitási szolgáltatás megvalósítása. A számlanyitási szolgáltatás magában foglalja a szerződés létrehozását és a számla lefoglalását. A számla nyitásakor sikeresen létrejött az ügyfél szerződése (elmentve az adatbázisba), de a lefoglalási szolgáltatás technikai hibát adott vissza. Milyen követelményeket, rendszeranalitikusként, a szerződés és a lefoglalás esetében bemutatnál? Az integrációs forgatókönyv megvalósítási lehetőségei, figyelembe véve egy elosztott mikroservice architektúrát.
sobes.tech MI
Válasz az MI-től
В условиях распределённой микросервисной архитектуры при реализации сервиса открытия счета с двумя ключевыми операциями — созданием договора и резервированием счета — необходимо учитывать вопросы согласованности и обработки ошибок.
Требования к ФП Договор:
- Обеспечить атомарность операции создания договора с точки зрения локальной БД (транзакция).
- Предусмотреть возможность отката или компенсации в случае ошибок на последующих шагах (например, если резервирование счета не удалось).
- Логировать статус создания договора и результат взаимодействия с сервисом резервирования.
Требования к ФП Резервирование:
- Обеспечить идемпотентность операций резервирования счета.
- Возвращать детализированные ошибки с кодами и описаниями для корректной обработки.
- Поддерживать возможность компенсации (отмена резервирования) в случае отката.
Варианты реализации интеграционного сценария:
-
Оркестрация с использованием саги:
- Сервис открытия счета инициирует создание договора.
- После успешного создания договора вызывается сервис резервирования.
- Если резервирование завершается ошибкой, запускается компенсирующая транзакция — удаление или аннулирование договора.
- Такой подход требует реализации механизма саги и управления состояниями.
-
Хореография через события:
- Сервис создания договора публикует событие "Договор создан".
- Сервис резервирования подписывается на это событие и пытается зарезервировать счет.
- В случае ошибки сервис резервирования публикует событие "Ошибка резервирования".
- Сервис договора реагирует на это событие, выполняя компенсирующие действия.
-
Транзакции с двухфазным коммитом (2PC):
- В распределённых системах редко применяется из-за сложности и производительности, но возможен при наличии поддержки.
-
Использование очередей и повторных попыток:
- При ошибке резервирования запрос помещается в очередь на повторную обработку.
- Если после нескольких попыток ошибка сохраняется, инициируется компенсация.
В итоге, как аналитик, необходимо чётко прописать требования по обработке ошибок, идемпотентности, компенсации и логированию, а также согласовать с командами реализации подход к интеграции (саги, события, очереди).