バックエンドのアーキテクチャ
イベント駆動型注文/請求書マイクロサービス
ドメイン駆動設計と送信ボックス パターンを利用した拡張性の高いマイクロサービス アーキテクチャにより、信頼性の高いメッセージ配信が保証されます。
The challenge
分散システムでは、遅い分散トランザクション (2 フェーズ コミット) に依存せずに、複数のサービス間でデータの一貫性を確保することが、アーキテクチャ上の大きなハードルとなります。クライアントでは、高トラフィック イベント中にメッセージがドロップされたり、一貫性のない状態が発生したりしました。
The solution
イベント駆動型アーキテクチャを使用して、中核となる注文と請求書のフローを再設計しました。 Transactional Outbox パターンを実装することで、Kafka/RabbitMQ への少なくとも 1 回のメッセージ配信が保証されました。すべてのコンシューマが冪等になるように設計されており、重複したメッセージによって請求書の重複や破損した状態が発生しないようにしています。