ふくおかフィナンシャルグループ(FG)は2021年春頃の創業を目指し、新たなネット銀行「みんなの銀行」の基幹系システムをクラウド上に構築中だ。マイクロサービスアーキテクチャーでアプリケーションを開発し、様々な変化を迅速に取り込めるようにする。高速なデータ分析基盤も用意し、顧客サービスのパーソナライズ化を推進する構えだ。
みんなの銀行の基幹系システムは、アクセンチュアがGoogle Cloud Platform(GCP)上に構築した「アクセンチュア クラウドネイティブ コアソリューション」(通称MAINRI、メイリー)をベースとする。MAINRIのコアをつかさどる4種類のアーキテクチャー上の工夫を順番に見ていこう。
マルチリージョン構成で可用性向上
最初に紹介するのは「クラウド上で可用性と性能を担保する」ためのアプリ実行基盤だ。GCPが提供する「Google Kubernetes Engine(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は、データの更新と参照を分離してマイクロサービスを実装する設計パターンだ。更新系と参照系の独立性が上がるだけでなく、システム全体の耐障害性を高められる。
マイクロサービスではサービスごとに独立したデータベースを持つことで、サービス間の依存性を低減できる。ただし、サービスの独立性が高まりメンテナンスが容易になる半面、サービス間でデータを同期する必要が生じる。マイクロサービス間でデータを同期する手法の1つがイベントソーシングであり、MAINRIではメッセージキューイングのツールである「Apache Kafka」で機能を実装している。
アクセンチュア テクノロジー コンサルティング本部 インテリジェントソフトウェアエンジニアリングサービス グループ テクノロジーアーキテクトリードの水上廣敏 マネジング・ディレクターは「Kafkaを使うことでマイクロサービス間において2~3秒程度でデータの同期が可能になる。これで業務が回るようにデータベースを設計した」と話す。ただし「リアルタイムのデータ連携が必要な場合はAPIで直接やり取りするようにした」と、Kafkaの利用方針を説明する。