全2966文字
PR

 ふくおかフィナンシャルグループ(FG)は2021年春頃の創業を目指し、新たなネット銀行「みんなの銀行」の基幹系システムをクラウド上に構築中だ。マイクロサービスアーキテクチャーでアプリケーションを開発し、様々な変化を迅速に取り込めるようにする。高速なデータ分析基盤も用意し、顧客サービスのパーソナライズ化を推進する構えだ。

 みんなの銀行の基幹系システムは、アクセンチュアがGoogle Cloud Platform(GCP)上に構築した「アクセンチュア クラウドネイティブ コアソリューション」(通称MAINRI、メイリー)をベースとする。MAINRIのコアをつかさどる4種類のアーキテクチャー上の工夫を順番に見ていこう。

マルチリージョン構成で可用性向上

 最初に紹介するのは「クラウド上で可用性と性能を担保する」ためのアプリ実行基盤だ。GCPが提供する「Google Kubernetes Engine(GKE)」と「Cloud Spanner」を組み合わせて実装した。

「GKE」と「Cloud Spanner」で構築したアプリ実行基盤
「GKE」と「Cloud Spanner」で構築したアプリ実行基盤
(出所:アクセンチュア)
[画像のクリックで拡大表示]

 GKEはオープンソースのコンテナオーケストレーションツール「Kubernetes」をGCPがマネージドサービスとして提供するもの。MAINRIでは、アプリケーションをマイクロサービスとして実装し、Kubernetesのコンテナ上で稼働させる。処理の負荷が高まった場合は、GKEがマイクロサービス単位で高速にオートスケールを行い、処理性能を引き上げる仕組みだ。

 マイクロサービス間の通信管理などを行うサービスメッシュツールの「Istio」も使う。Kubernetesでは「Pod」と呼ぶ単位でコンテナを管理する。「処理によっては何十というPodを立ち上げないと性能が出ない。その際、ログの管理やアクセス制御などが必要だが、これにIstioを使う。以前は自分たちで管理していたが、今はIstioがやってくれる」(アクセンチュア テクノロジー コンサルティング本部 インテリジェントソフトウェアエンジニアリングサービス グループ日本統括の山根圭輔マネジング・ディレクター)。

 Cloud SpannerはGCPが提供する拡張性の高いリレーショナルデータベースで、GKE同様にマネージドサービスとして提供される。分散型のアーキテクチャーを採用するため、GCPの複数リージョンにまたがって利用できるのが特徴だ。みんなの銀行ではGCPの東京および大阪リージョンを活用するマルチリージョン構成を取り、システム全体の可用性を高める方針である。

サービス間のデータを2~3秒で同期

 MAINRI上のアプリは、小さなサービスを連携して一連の機能を実装するマイクロサービスアーキテクチャーに基づく。あるサービスの変更が他サービスに与える影響を極小化し、サービスの改善スピードを上げる狙いがある。

 マイクロサービスを活用するための工夫が、「CQRS(Command and Query Responsibility Segregation、コマンドクエリー責務分離)」と「イベントソーシング」である。

マイクロサービスを支える「CQRS」と「イベントソーシング」
マイクロサービスを支える「CQRS」と「イベントソーシング」
(出所:アクセンチュア)
[画像のクリックで拡大表示]

 CQRSは、データの更新と参照を分離してマイクロサービスを実装する設計パターンだ。更新系と参照系の独立性が上がるだけでなく、システム全体の耐障害性を高められる。

 マイクロサービスではサービスごとに独立したデータベースを持つことで、サービス間の依存性を低減できる。ただし、サービスの独立性が高まりメンテナンスが容易になる半面、サービス間でデータを同期する必要が生じる。マイクロサービス間でデータを同期する手法の1つがイベントソーシングであり、MAINRIではメッセージキューイングのツールである「Apache Kafka」で機能を実装している。

 アクセンチュア テクノロジー コンサルティング本部 インテリジェントソフトウェアエンジニアリングサービス グループ テクノロジーアーキテクトリードの水上廣敏 マネジング・ディレクターは「Kafkaを使うことでマイクロサービス間において2~3秒程度でデータの同期が可能になる。これで業務が回るようにデータベースを設計した」と話す。ただし「リアルタイムのデータ連携が必要な場合はAPIで直接やり取りするようにした」と、Kafkaの利用方針を説明する。