ARIGATOBANKがGCPを提供基盤に採用したのは、同サービスのPaaSやマネージドサービスがこれらの課題解決に役立つと考えたためだ。選定のきっかけは大きく分けて2つある。
1つはマネージドKubernetesサービス「GKE」(Google Kubernetes Engine)の存在だ。kifutownのバックエンドアプリケーションはGo言語で作成しており、それをDockerコンテナのイメージにしてKubernetes上で動かしている。GKEはこれをポッド(Dockerコンテナのグループ)化する手順が簡単で、デプロイすればすぐサービスとして公開できるため「開発のベースになっている」という。
さらに、Kubernetesクラスタへの負荷を分散する「Ingress」を活用することで、同時に数万、数十万といった多くのトラフィックが集中してもアプリケーションの性能を維持できるため、kifutownが抱えるピーク特性にも有効と判断したという。
GCPを採用したもう一つの理由は、分散データベース「Cloud Spanner」の存在だ。
kifutownはサービス開始時の利用規模を見極めにくかったことから、一度ローンチしてからユーザー数やトラフィックを計測し、後から徐々に調整を加えていく手法を採用していた。データベースを停止せずスケールでき、シャーディング(データをユーザーのIDごとに分け、格納するデータベースを分割する手法)も高速なCloud Spannerと、kifutownでの調整手法の相性が良く、アプリケーションの実装を高速化するのに役立ったという。
GKEやCloud Spannerを活用するためにGCPを採用したkifutown。実際のサービスでは、認証やプロジェクトの立ち上げ機能などを独立したサービスとして開発し、APIなどで連携して1つのアプリケーションにする「マイクロサービスアーキテクチャ」という手法を採用した。
ユーザーからのリクエストは一度Ingressで受け止め、GKE上のKubernetesで動作するマイクロサービス群に受け渡す仕組みだ。データの読み取りと書き込みは、マイクロサービスごとにCloud Spannerで管理しているデータベースで処理する。
個人情報を適切に管理するため、統合ID基盤は独自開発のものを採用。デジタル認証「OpenID Connect」を活用して開発したものをログインやサインアップ機能に活用しているという。
サービス設計に当たってはDatabase per service(サービス単位のデータ管理)の考え方を採用した。各マイクロサービスに独自のデータベースを用意することで、データをやりとりするとき、誤って別のサービスのデータを参照したり、書き込んだりするトラブルを防いでいるという。
ARIGATOBANKがこのようなシステム構成を採用したのは、システムの柔軟性、拡張性を高めやすいというマイクロサービスアーキテクチャの特徴を活用するためだ。河津CTOはシステム設計の意図についてこう話す。
「われわれは、お金に困る人のいない社会という目指すべきビジョンを抱えている。このビジョンをどう解決すべきかはまだ手探りの状況だが、たくさんある仮説やアイデアを、プロダクト開発サイクルの中で検証し、プロダクトを作ってリリースし、さらに検証するというサイクルを回し続け、一歩ずつまい進していきたいと思っている」
マイクロサービスアーキテクチャを採用し、開発サイクルを高速化しているARIGATOBANK。kifutownでは現在、最低1万円からしか寄付ができないが、今後は1円単位で寄付できる新機能や、電子マネーを寄付できる機能も追加する方針だ。
「本番環境に手軽かつ安心してリリースできる仕組みが、クラウドネイティブなインフラの大きな強みだと感じている。当初ローンチしたときに足りないもの、こうだったらいいのにというアイデアやフィードバックを取り入れることで、より良いサービスになってきていると思う」
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR