Momotaro
Razorpayの AIハッカソン向けに構築した、決済失敗とマンデート復旧のためのエージェントです。9つのGoサービスが決済失敗の原因を診断し、原因に応じた唯一の検証可能な復旧処理を実行します。Kafkaのat-least-once配信の上でも、金融処理のexactly-once(正確に一度だけ)実行を保証する設計です。
課題
金融復旧処理は二重に実行されてはならず、バッチ処理中のクラッシュで消えてもいけません。Kafkaのat-least-once配信では重複処理が前提となるため、トランスポート層に頼らず、アプリケーション側でexactly-onceを保証する設計が必要でした。
アプローチ
PostgresのUNIQUE制約を利用したinsert-before-execute方式の書き込み、状態と監査ログを同一トランザクションでコミットする設計、そして連続したオフセットのみをコミットするKafkaのコミット方式により、クラッシュが発生しても処理の欠落や重複が起きない仕組みを実現しました。
原因を診断する、ただ再試行するのではなく
Razorpayの AIハッカソン(Track 03: AI Revenue Recovery)向けに開発したMomotaroは、決済・マンデート・チェックアウト・請求書の失敗を監視し、単純な再試行ではなく、なぜ失敗したのかを特定します。原因の分類はまずルールベースで行い、確信度が低い場合のみLLMに判断を委ねます。LLMへのアクセス量には上限を設けています。原因が何であれ、その原因に対応した唯一の検証可能な復旧処理を実行します。
