コンテンツに移動
顧客事例

ARIGATOBANK:GKE + Cloud Spanner で瞬間的なトラフィックの急増に耐えるシステムを実現

2022年4月26日
https://storage.googleapis.com/gweb-cloudblog-publish/images/hero_image_arigatobank_horizontal.max-2600x2600.jpg
Google Cloud Japan Team

ZOZO の創業者である前澤 友作氏が株主となり、「お金に困っている人をゼロにする」というビジョンのもと設立された株式会社ARIGATOBANK(以下、ARIGATOBANK)では、お金を寄付したい人と、寄付による支援を受けたい人を繋ぐプラットフォーム「kifutown」をスタートしました。この kifutown は、Cloud Spanner を中心とする Google Cloud のさまざまなプロダクトを利用して構築されています。kifutown の開発および運用に携わるメンバーに話を伺いました。

利用しているサービス:

Cloud Spanner、Google Kubernetes Engine、Container Registry、Cloud Run、Cloud Load Balancing、Cloud NAT、Cloud Armor、Cloud Router、Cloud Logging、Cloud Functions

利用しているソリューション:

アプリケーションのモダナイゼーション、データベースのモダナイゼーション

kifutown に求められる要件には GKE と Cloud Spanner の組み合わせが最適だと判断

https://storage.googleapis.com/gweb-cloudblog-publish/images/kt_products_img.max-800x800.png

ARIGATOBANK がスタートした寄付プラットフォームの kifutown は、「お金に困っている人をゼロにする」というビジョンの実現に向けて打ち出した第一弾の施策です。kifutown には、寄付をする支援者と、寄付を受け取る応募者の 2 種類のユーザーがいます。まず、支援者が「こんな人々を支援したい」というプロジェクトを立ち上げます。そして、支援を受けたい人々がそれに応募し、対象として選ばれれば kifutown を通じて寄付金を受け取ります。

ARIGATOBANK では、この kifutown を支えるシステムを Google Cloud を利用して構築しました。Google Cloud を採用した経緯について、ARIGATOBANK の CTO でありエンジニアリング責任者も務める河津 拓哉氏は次のように説明します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/_DSC3759_small.max-1500x1500.jpg

「もともと弊社のビジネス展開においては、株主の前澤が持つ人脈や SNS の拡散力を活用して認知度を広げていきたいという狙いがありました。しかしその一方で前澤の影響力の大きさを考えると、たとえば Twitter への投稿ひとつで瞬時にトラフィックが急上昇することも予測されました。そのためビジネスの基盤となるシステムの開発にあたっては、どのようにして急激なトラフィックの変化に対応するのかが最大の課題でした。」

その上で、Google Cloud であれば ARIGATOBANK が抱えるこの課題をクリアする十分なポテンシャルがあるという判断に至ったと河津氏は続けます。

「実は、kifutown の構想が固まるよりも以前から、将来的に必要になりそうな機能の開発は先行してスタートしていました。当初開発していたのは ID サービスで、その際に検討したのが Google Kubernetes Engine(GKE)と Cloud Spanner、Cloud Load Balancing、そしてアプリ側に Firebase を使うといった構成です。その時点で、この構成であれば需要に対して柔軟にスケールできて、かつ十分なキャパシティを備えているということを確認することができました。結果的に技術選定そのものにはそれほど時間はかかっていません。早い段階で、弊社のビジネスの要件に対して Google Cloud であれば大丈夫だと思えたことが一番大きな採用理由とも言えます。」

kifutown のシステムで中心となっているのが、マイクロサービスの実行基盤である GKE と、分散型リレーショナル データベースの Cloud Spanner です。その他に、柔軟なスケーリングを可能にする Cloud Load Balancing や、セキュリティのための Cloud Armor、ネットワークを担う Cloud NAT や Cloud Router など、Google Cloud の各種プロダクトをフル活用した構成になっています。それに加えて、外部 SaaS パートナーとの連携のためにコンテナ プラットフォームの Cloud Run も利用しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/akitekuchiya_2.max-2200x2200.png
クリックして拡大

GKE + Cloud Spanner という構成を中心に据えた理由について、河津氏は次のように説明しています。

「まず前提として、マイクロサービス アーキテクチャを採用することはあらかじめ決まっていました。開発初期はまだ要件が定まっていない部分もあり、データ モデリングを通してデータ エンティティを中心に具体化し、徐々にサービスとして組み上げていく方針を採りました。それぞれのエンティティに対しての責務を明確にすることで、漸進式の開発であっても開発スピードと品質を維持したかったからです。その上で、アプリケーション サーバーの運用に労力を割きたくないという理由で Kubernetes を選択しました。データベースについては、kifutown は金融サービスの一種なのでデータの整合性を保証できることが極めて重要でした。かといってトランザクション管理をアプリケーション側のテクニックで補うことは避けたかったので、強力なトランザクション エンジンを持つ Cloud Spanner が最適だと判断しました。」

サービスの実装を担当したエンジニアリング部の富樫 知基氏は、Cloud Spanner を使った開発について次のように補足します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/_DSC3797_small.max-1500x1500.jpg

「実際に Cloud Spanner を使ってみると、クライアント ライブラリが非常に良く出来ていることを実感します。例えばトランザクションの競合の検知やリトライなど、本来であれば複雑な実装が必要な部分も、基本的にすべて Cloud Spanner に任せられるようになっています。この手軽さは他のデータベース システムでは体験したことがありません。スケールについても、​​画面上で設定するだけで簡単に変更できるあたりは近未来感があります。」

柔軟にスケールできることは、kifutown の開発において最も大きな課題でもありました。この点に関する Cloud Spanner の強みについては、インフラストラクチャの開発や運用を担当している エンジニアリング部の大和屋 貴仁氏も次のように説明しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/_DSC3919_small.max-1500x1500.jpg

「従来のリレーショナル データベースでは、どれだけ頑張ってもスケールアップには限界がありましたし、対応にも時間がかかりました。それに対して Cloud Spanner であれば、ノードを増やせば自動でスケールしてくれて、どれだけトラフィックが増えたとしてもレイテンシを維持することができます。この柔軟性が kifutown には不可欠でした。スケーラビリティという点では NoSQL という選択肢もありますが、NoSQL にはデータ整合性の問題があり、その解決のためには新しいノウハウが必要になります。Cloud Spanner であればリレーショナル データベースの概念のままで利用できるので、経験のあるエンジニアの確保という面でも大きなメリットがあります。」

少人数体制による短期間での開発でも、メンバーの健康的な生活を維持

kifutown の初期開発にかかった期間は約 2 か月半。バックエンドのエンジニアが 4 名、フロントエンドのエンジニアが 4 名の計 8 名という少人数体制のプロジェクトでした。少人数でも高速な開発が実現できたのも、やはり Google Cloud を、とりわけ GKE と Cloud Spanner を採用したことに依るところが大きかったと、富樫氏と大和屋氏は振り返ります。

「トランザクション周りの処理を Cloud Spanner に任せられたことで、開発者としてはビジネス ロジックの実装に集中することができ、インフラ周りも GKE のおかげで複雑なことを考えずに構築できました。難しい部分にリソースを割く必要が無くなったことが、少人数で 2.5 か月という高速な開発を実現できた理由だと思います。」(富樫氏)

「Cloud Spanner のおかげで、スケーラビリティやレイテンシの維持などのために余分なテクニックを使う必要がなく、シンプルな構成を維持できたことが大きいです。複雑になれば、それだけ開発にも時間がかかりトラブルも増えますが、kifutown はシンプルに作れたことで大きなトラブルに遭うことなく開発を進められました。」(大和屋氏)

チームを束ねる立場である河津氏は、次のように補足します。

「我々のようなスタートアップのシステム開発ではエンジニアの負担が大きくなりがちですが、kifutown の開発ではメンバーがうまく私生活とのバランスをとって働いてくれました。GKE と Cloud Spanner のおかげでエンジニアがフォーカスするポイントを明確にすることができ、それがメンバーの健康的な生活の維持にも大きく役立ったと思っています。」

前澤氏による「全員お金贈りfrom宇宙」もトラブル無く乗り切る

kifutown では正式にサービスがスタートしてから順調にユーザーが増え、入金まで至って正式に開始された寄付プロジェクトは 2022 年 3 月時点で約 2,000 件に達しています。それにも関わらず、特別に kifutown のための保守体制のようなものは設けておらず、ほとんど労力をかけずに運用できていると大和屋氏は言います。

「何かトラブルがあれば通知が来るのですぐ対処できますし、サイバー攻撃を受けることもありますが Cloud Armor で適切に防ぐことができています。大きなイベントなどでトラフィックが上がることが事前に予測できる場合には、専用のサービスを立ち上げるなどして対応できるようにしています。」

そんな中で最も大きなインパクトがあったイベントは、前澤氏による「全員お金贈りfrom宇宙」でした。これは、民間人宇宙飛行士として国際宇宙ステーションに滞在していた前澤氏が、kifutown を通じて過去最大規模のお金贈りを実施したキャンペーンです。このキャンペーンでは、前澤氏が募集開始のツイートをした直後から通常時の数十倍にトラフィックが急増しました。

「このときは Cloud Spanner のノードを一時的に増やし、GKE の Pod も大幅に拡張して対処しました。トラフィックが上がるときにはアプリ全体も高負荷になる傾向がありますが、その点はあらかじめ想定した設計になっているので、十分に耐えることができます。結果的に、大きなトラブルも無く乗り切ることができました。」(大和屋氏)

ARIGATOBANK にとって、kifutown は「お金に困っている人をゼロにする」というビジョンを実現するための最初の一歩となるサービスであり、今後も個人が気軽に寄付をして助け合える世界を実現できるようにアップデートしていく予定だと河津氏は語っています。

「これまではお金の媒介には銀行を利用させていただいてきましたが、ユーザーにとってより良い体験を作るために、アプリ上のウォレットで残高として受け取り、そのまま店頭やオンラインでの支払いに利用できる機能として、残高(電子マネー)機能をリリースしました。また、寄付を届けるというサービスの本質部分では、もっと気軽に寄付プロジェクトに応募できるようにするなど、全体的なお金の流通量を増やすための施策も検討しています。今回、Google Cloud で迅速に開発ができたという実績があるので、今後も引き続き活用していきたいと考えています。」


https://storage.googleapis.com/gweb-cloudblog-publish/images/_DSC3975_small.max-1500x1500.jpg

株式会社ARIGATOBANK

ARIGATOBANKは、「お金に困っている人をゼロにする」をビジョンに掲げ、人と人とが応援し、励まし合える社会を作るためのサービスを提供する会社です。

インタビュイー(写真左から)

・CTO / エンジニアリング責任者 河津 拓哉 氏

・エンジニアリング部 富樫 知基 氏

・エンジニアリング部 大和屋 貴仁 氏


株式会社ARIGATOBANKの導入事例 PDF はこちらをご覧ください。

その他の導入事例はこちらをご覧ください。

投稿先
関連記事