メルペイが Cloud Spanner で簡単に数百万のユーザーにスケールできた方法
Shingo Ishimura
Google App Engine Meister
※この投稿は米国時間 2021 年 4 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: メルカリは新しいモバイル決済プラットフォームを立ち上げるために、スケーラビリティ、可用性、パフォーマンスに優れたデータベース ソリューションを必要としていました。これを Cloud Spanner で実現した方法をご紹介します。
e コマース企業はゼロ ダウンタイムでお客様をサービスに安全かつ確実に接続する必要があります。株式会社メルカリが新しいモバイル決済プラットフォームを立ち上げた際、データ ポートフォリオの一部として Cloud Spanner を選びました。これにより、数百万人の新規ユーザーを処理できる簡単なスケーラビリティ、オーバーヘッド コストを最小限に抑えるフルマネージド サービス、他の Google Cloud サービスとの緊密な統合が得られました。
日本最大級の C2C マーケットプレイスである株式会社メルカリは、2013 年にアプリをリリースしました。これにより、月間 1,820 万人ものユーザーが新品や中古品を簡単かつ安全に購入できています。メルカリは 2014 年に米国に進出し、2019 年に日本でメルペイをリリースしました。メルペイはメルカリを通じて使用できるモバイル決済サービスです。ユーザー数が 850 万人を超えるメルペイは現在、日本の 180 万の販売業者や e コマースサイトで利用でき、d アカウント(旧 docomo ID)非接触型決済システムと QR コードによる支払いをサポートしています。
可用性とスケーラビリティを優先
当社は、メルペイの構築を始めたとき、新しいデータベースを探していました。これまでメルカリはベアメタル ハードウェアで MySQL を使用していました。データ量が多いので、ハードウェア、ソフトウェア、MySQL の実装の管理と保守を担当する専門の技術者が必要でした。Google Kubernetes Engine(GKE)を使用してメルカリアプリのマイクロサービス アーキテクチャの多くを構築していたので、メルペイ向けの新しいデータベース インフラストラクチャを決める際に Google Cloud のマネージド サービスに注目したのは当然のことでした。
データベースについては、可用性、スケーラビリティ、パフォーマンスに関する要件を特に重視していました。1 つの支払いトランザクションを実行するには、それぞれに書き込みを伴う複数の手順があり、データベース要件として高い書き込みスループットと低いレイテンシを求めていました。信頼性の高い決済処理を 24 時間 365 日サポートするソリューションが必要なため、最大 99.999% の可用性を備え、予定されたメンテナンスとスキーマ変更でダウンタイムがない Spanner を選びました。
Google Cloud のプレミアム サポート、テクニカル アカウント マネジメント(TAM)、戦略的クラウド エンジニア チーム、クラウド コンサルタント チームと緊密に協力して Spanner を実装しました。その際に、もとはメルカリの機能の 1 つだった決済処理をマイクロサービスとして分離しました。
ノードが管理しやすくなり、スケールが向上
開始後わずか数か月でメルペイのユーザー数は 200 万人に達しました。メルペイのリリース時には Spanner のノード数は 45 であり、4 か月後でも 50 ほどでした。その 4 か月間にアプリケーション側を最適化したため、多くのノードを追加して増大するトラフィックに対応する必要はありませんでした。
使用可能なリソースやストレージ リソースをインスタンス内でスケールアップする必要がある場合は常に、Spanner を使えば適宜 Cloud Console でノードを簡単に増やすことができます。コストを最適化するために、マーケティング キャンペーン中にノードを追加し、後で削除するのは簡単です。トラフィック数が予想と違っても、ノード数をすぐに変更できます。これは Cloud Spanner の特筆すべき長所の 1 つです。
強力なパイプラインを構築
当社のデータ パイプラインは KPI 分析、不正検出、信用評価、カスタマー サポートのユースケースに使用されます。Cloud Spanner は他の Google Cloud データサービスと非常に簡単に統合できるため、Spanner のデータにアクセスして分析しやすくなっています。各マイクロサービスの Spanner データベースから、Pub/Sub や Dataflow、Apache Flink を使用してバッチとストリーミングの両方のデータ パイプラインを作成し、データを BigQuery と Google Cloud Storage に読み込みます。BigQuery や Cloud Storage などのデータ プラットフォームに必要なデータをすばやく集約できます。元のデータは Spanner に保存され、マイクロサービスによって管理されますが、BigQuery を通じた分析はデータ プラットフォーム チームによって一元管理されます。このチームはデータの機密性レベルを判断し、Terraform を使用して BigQuery の権限を一元管理します。個々のマイクロサービスではなく、データ プラットフォームでデータアクセス権を一元管理することで、個々のユーザーに適切なセキュリティを設定できます。
自社データ ポートフォリオ全体には Looker も含まれています。Looker は製品分析、会計分析、テスト パフォーマンスの可視化、運用モニタリング、開発効率分析、HR 分析に使用しています。また、Dataproc、Cloud Composer、Data Catalog、データポータルも使用しています。パイプライン用に作成された Dataflow テンプレートは OSS としても公開されています。
Spanner などの Google Cloud サービスのおかげで、メルペイのプラットフォームは柔軟性、安全性、スケーラビリティ、高可用性を発揮しています。Spanner によりオーバーヘッドを排除できるので、エンジニアリング リソースをお客様向けの新しいツールやソリューションの開発に充てられます。たとえば、今後は暗号通貨サービスを提供することを検討しており、まだオンプレミスであるメルカリのモノリシック システム全体を Google Cloud に移行するプロジェクトに現在取り組んでいます。
メルカリとメルペイについて詳細をご確認ください。または、最近のブログ投稿、今後のプロジェクトで Cloud Spanner の導入を検討すべき 3 つの理由をご覧ください。
-Google App Engine Meister 石村真吾