弊社では、サーバーレスにフォーカスしたコストマネジメントSaaS、CostlessをAWSマーケットプレイスに掲載しました。本記事はそのために行ってきた作業の内容について整理します。
料金モデルの選定
AWSマーケットプレイスポータル(AMMP)で販売者登録と口座登録の手続きを済ませると、SaaSプロダクトの価格体系に合わせて以下のいずれかの料金モデルを選択し製品登録を行います。SaaS側はそれに合わせてマーケットプレイスとSaaSプロダクトとのインテグレーションを実装する形になります。
料金モデル | 説明 |
SaaSサブスクリプション | いわゆる従量課金制モデルで、SaaSプロダクトを時間単位での利用に基づいて課金するといった場合に適しています。 |
SaaS契約 | 事前に決まった金額を支払いして一定期間SaaS製品を利用する形態の料金モデルです。 |
SaaS契約(従量課金あり) | SaaS 契約に加え、更に従量課金のオプションを混合することができるモデルです。最も多くのタイプの料金プランを実現できます。SaaS サブスクリプションとSaaS契約の両方をカバーできるので将来的にはおすすめの料金モデルですが、その分他に比べて実装の手間も増えることになります。 |
顧客登録及びSaaSプロダクトとの紐付け
顧客がマーケットプレイスの製品ページを開いて登録(Subscribe)ボタンを押した時にリダイレクトされる、SaaS側のランディングページを用意します。顧客名、連絡先、会社名など適宜必要な顧客情報を入力してもらい、SaaS側に連携します。
ここで、ランディングページが開く際、マーケットプレイス側よりカスタマーID、プロダクトコードといった情報と引き換えるためのトークンを付加してリダイレクトしてくれます。SaaS側はこのトークンを受け取り、マーケットプレイスのResolveCustomerというAPIを呼び出してカスタマーIDを取得、SaaS側のユーザー情報及び各機能などが制御できるように統合します。
「SaaS契約」の場合、更にEntitlementという契約情報を登録、管理する必要があります。DynamoDBを利用すると良いでしょう。
各種サブスクリプション状態の管理
顧客がマーケットプレイスでサブスクリプションの登録/解除や契約変更を行った場合、予めマーケットプレイス側から用意される専用SNSトピックにその状態が通知されます。
具体的にはSaaS契約の場合 entitlement-updated
, SaaSサブスクリプションの場合4パターン( subscribe-success
, subscribe-fail
, unsubscribe-pending
, unsubscribe-success
)の状態が通知されます。SaaS側ではこれらの状態変更の通知を受け適宜対応する形になります。
従量課金処理の対応
SaaSサブスクリプションとSaaS契約の従量課金を実装したい場合、1時間ごとにユーザーの使用量に対する課金単位(ユニット)をマーケットプレイス側に送信する必要があります。製品登録時に構成した料金区分に合わせて課金単位の量を計算し、BatchMeterUsageという API を利用して送信します。
AWSマーケットプレイスチームによるE2Eテスト
ここまで来たら、マーケットプレイスと統合するための作業は一通り完了します。最後に、AWSマーケットプレイスチームへ進捗を連絡すると、製品レビューとE2Eテストが実施されます。公式ドキュメントの「SaaS製品チェックリスト」を参考に、抜け漏れがないかチェックしましょう。無事テストが通れば、公開日を設定してリリースとなります。