Geolonia様は、ウェブサイトやアプリに地図を表示したいユーザーに向けて、低コストでカスタマイズ性の高い地図APIを提供しています。インターネット上の地図としては「Google マップ」という大きな競合が存在しますが、Geolonia様は、料金、地図のカスタマイズの柔軟性、表示速度といった点で優位性を持っています。
同社は、地図サービスの正式ローンチにあたり、課金システムの構築が必要となり、弊社に開発協力のご依頼をいただきました。課金システムの構築における主な課題は以下の通りです。
- システム運用の負荷低減のため、可能な限りサーバーレスアーキテクチャで開発する
- 請求に関するトラブルはエンドユーザーに大きな影響を与えるため、リスクの低い技術を選定する
- 課金システムの開発時点では料金体系が未確定のため、後から設定可能な仕組みを採用する
1は、インフラ管理コストの削減を目指すスタートアップ企業としては当然の選択と言えます。2は、有償サービスを運営する上で当然の考え方です。3については、Geolonia様では、サービスの正式ローンチ直前まで料金体系の検討を行っていたため、このような要件が必要となりました。
地図APIの利用に応じた料金形態の仕組みを構築
上記の要件に基づいたアーキテクチャは以下の通りです。
Geolonia様の課金システムは、APIに関するログをすべてAmazon S3に保存し、そのログをAmazon Athenaで加工します。そして、Fargate上に構築した集計プログラムがユーザーごとの利用状況をまとめ、DynamoDBに保存します。Stripeで設定した定期請求のサイクルに合わせて、月次でDynamoDBから利用状況を読み込み、料金を計算し、ユーザーごとに請求書を自動的に発行します

今回は、集計プログラムの構築に、AWS Fargateを採用しました。AWSでプログラムを実行するには、主に3つの選択肢があります。仮想マシンを利用できるAmazon EC2、コンテナを実行できるAWS ECS(Fargate)、そして完全にサーバーレスなAWS Lambdaです。
EC2は自由度が高いですがミドルウェア等のメンテナンスを自分で行う必要があります。Lambdaはコードを置くだけでプログラムが実行可能ですが、その自由度に制限があります。メンテナンス性の観点でFargateは両者の中間の位置づけと考えて良いかもしれません。
Fargateを選択した理由は、Lambdaの1タスクの動作時間上限が15分であるためです。ログからの集計は、ファイルサイズによっては15分を超える可能性があります。Fargateであれば、プログラムの動作が15分を超えても問題なく、またコンテナを動作させるための最低限のプロビジョニングと設定のみで済み、かつフルマネージドサービスであるため、メンテナンスなどの負担が多くありません。
サーバーレスオペレーションズでは、アプリケーション開発において、まずLambdaでの開発を検討します。今回単純な集計処理でありStep Functions等での処理の分解が難しく、また将来的にログのサイズなどが大きくなる可能性も考慮し、LambdaではなくFargateを選択しました。
Stripeならシステム開発後に料金体系を設定可能
また、今回は、料金体系に関する設定を課金システムの完成後に行う必要がありましたが、決済サービスにStripeを選択することで、この課題を問題なく解決できました。インターネット上ですべての処理が可能な決済サービスは数多く存在しますが、ことWeb APIのようなデジタルサービスにおいては、Stripeが最有力な選択肢と言えます。
Stripeは、サブスクリプション型と従量課金型のどちらの課金体系にも対応でき、両方を組み合わせた課金体系もメニューから選択可能です。ユーザー数や利用回数といった課金単位、そして単位ごとの課金額などを入力するだけで、さまざまな課金方法を実現できます。さらに、決済手段もクレジットカードだけでなく、PayPalやGoogle Pay、Apple Payといった決済サービス、さらにはPayPayやコンビニ決済など、日本独自の決済方法にも対応しています。
つまり、決済機能だけでなく、料金体系や従量課金の計算など、課金に関わる部分のほとんどをStripeに任せることができ、開発者はサービスとの連携部分を適切に実装するだけで済むのです。「Stripeしか選択肢がない」というのは、ネガティブな意味ではなく、むしろポジティブな意味合いでの表現です。ユーザーコミュニティも活発に活動しており、ミートアップなども定期的に開催されているようです。個人的には、このようなコミュニティが存在するプロダクトは信頼できると考えています。
上記のアーキテクチャとサービス選定の結果、Geolonia様は、課金システムの完成後に料金体系の設定を無事に完了し、現在、サービスは問題なく稼働しています。今後、料金体系を変更する場合でも、Stripeを使用しているため開発の工数は最小限になるでしょう。
サーバーレスオペレーションズでは、このようなWeb APIをはじめとしたデジタルサービスの課金・決済システムの開発支援を行っています。Stripeは開発者にとって非常に使いやすいサービスですが、決済関係のシステムを自社だけで構築することに不安を感じる方もいらっしゃるでしょう。決済サービスとの接続がうまくいかない、課金体系の設定方法が分からないなど、お困りの際はぜひお気軽にご相談ください。