Amazon Web Services ブログ

イベントドリブンな金融モダンアプリケーション実装を公開(金融リファレンスアーキテクチャ日本版 2025)

金融リファレンスアーキテクチャ日本版」は、金融で求められるセキュリティと可用性に関するベストプラクティスを提供するフレームワークとして 2022 年 10 月に正式版として発表し、多くのお客様にご利用いただいております。この度、モダンアーキテクチャのサンプルとして、オンラインバンキングアプリケーションのユースケースを公開しました。本ブログ記事では、オンラインバンキングアプリケーションのユースケースを解説いたします。

ユースケースの紹介

本ユースケースは、モバイルバンキングアプリケーションを題材として、口座開設、残高照会、振込処理の主要機能を各種業務を取り扱うシステムサンプルを提供しています。
今回のリファレンスアーキテクチャでは、分散システムにおける整合性担保の観点で、イベントソーシングパターンを採用しています。金融業界を対象に作成していますが、それに限らず様々な業界のシステムに応用できる汎用的なものとなっています。

金融システムにおけるマイクロサービスアーキテクチャのメリット

マイクロサービスアーキテクチャでは各サービスが独立して動作するため、一つのサービスで障害が発生しても他のサービスは正常に稼働し続けることができます。これにより障害の影響範囲を局所化でき、システム全体の可用性を向上させることが可能になります。また、負荷の高いサービスのみを個別にスケールアウトできるため、リソースの効率的な活用とコスト最適化を実現できます。
マイクロサービスとモノリシックなシステムにはそれぞれ異なる特性があり、レジリエンスの観点での詳細な比較や考慮すべきポイントについては、金融システムにおけるマイクロサービスアーキテクチャのメリットをご参照ください。

リファレンスアーキテクチャの解説

口座開設、振込の二つの処理は非同期処理として利用者からのリクエストを受け付けたのち、AWS Lambda、Amazon Simple Queue Service (Amazon SQS)、Amazon EventBridge を使用し、状態変更を Amazon DynamoDB に変更履歴(監査証跡)イベントとして保管するイベントソーシングの形で実装されています。勘定系 API を呼び出す際の一貫性を担保するため、トランザクションアウトボックスを採用し、AWS Lambda の内部には再実行の仕組みを組み込んでいます。


本リファレンスアーキテクチャでは、以下 三つのスタックに分けて実装されています。

  • OnlineBankingAppFrontendStack: React SPA によるフロントエンド
  • OnlineBankingAppBackendStack: AWS Lambda + Amazon DynamoDB によるマイクロサービス群
  • TemporaryCoreBankingSystemStack: 勘定系システムの API を擬似的に作成したバンキングシステム

詳細なアーキテクチャ構成、提供 API、実装の詳細については、リファレンスアーキテクチャの解説をご参照ください。

イベントソーシングとは

イベントソーシングとは、アプリケーションの状態を一連のイベントとして保存するアーキテクチャパターンです。最新状態のみを保持する手法とは異なり、すべての変更をイベントとして記録することで、完全な監査証跡を提供します。金融サービスにおいては、規制遵守と透明性の要件を満たすために特に有効で、取引履歴の完全な追跡が可能になります。これにより例えばアプリケーションの問題による不整合や、インフラ障害が起きた際に単なるデータのバックアップではなく、システム全体の状態を正確に復元することが可能にします。

加えて、Command Query Responsibility Segregation(CQRS)の設計パターンと組み合わせることで、スケーラビリティの向上を容易にします。CQRS とはコマンド(書き込み)とクエリ(読み取り)の責任を分離するパターンで、それぞれの処理を最適化できる利点があります。更新用と参照用で異なるデータモデルとデータストアを使用することで読み書きを分離し、参照処理に特化したデータ構造により高速な検索が可能になります。
イベントソーシング、CQRS 以外にも、Saga パターン、トランザクションアウトボックスパターンなど、分散システムにおける様々なデザインパターンについては、分散システムにおけるデザインパターンをご参照ください。

おわりに

金融リファレンスアーキテクチャ日本版の全てのコンテンツとコードは、パブリックの GitHub リポジトリから参照でき、Git リポジトリとしてローカル環境にクローンすることもできます。フィードバックや質問については  Issue として GitHub サイト上に登録いただけます。また、執筆者に直接ご連絡頂いても構いません。ご利用される皆様からのニーズや意見に基づいて今後の改善方針を決めていきたいと考えておりますので、ご質問やフィードバックをお待ちしております。

本ブログ記事は、AWS のソリューションアーキテクトである根本裕規、山下翔平、池田優が執筆いたしました。