Skip to content

新着ガイドビジネスを止めずにレガシーシステムをモダナイズする

アーキテクチャ

スケーラブルなSaaSプラットフォームの作り方:初期に重要な判断

テナンシー、データ、課金、運用。最初のバージョンで押さえるべきこと。

著者
Eryon エンジニアリング
公開日
更新日
読了時間
2 分
会員、売上、アクティビティを表示するサブスクリプション型SaaSのダッシュボード

要点

  • スケーラビリティは、サーバーではなくデータモデルとテナンシーから始まる。
  • アプリケーション層をステートレスに保ち、水平にスケールできるようにする。
  • 時間のかかる処理は、最初のリリースからバックグラウンドキューへ。
  • 課金、オンボーディング、可観測性をコア機能として扱う。

SaaSのスケーリングの問題の多くは、最初のリリースで決まっています。作り直しなしで成長できるSaaSプロダクトのための、アーキテクチャ上の選択を実践的に解説します。

SaaSにとっての「スケーラブル」の意味

スケーラビリティは、より多くのトラフィックをさばくことと捉えられがちです。SaaSビジネスにとってはそれ以上の意味があります。手作業を増やさずに顧客を増やせること、すべてのリリースを遅くせずに機能を追加できること、ひとつの大口顧客が他の顧客の体験を損なわないことです。

厄介なのは、これらの多くが、チームが小さくスピードが最も重要な最初のリリースで決まってしまうことです。目標は初日から数百万ユーザーに備えることではなく、後で作り直しを強いる判断を避けることです。

テナンシーとデータモデルを正しく

顧客データを持つすべてのテーブルには明確な所有者、通常はテナントや組織のIDが必要で、すべてのクエリがそれを尊重しなければなりません。例えばPostgreSQLの行レベルセキュリティでデータベース側で強制すれば、フィルターを忘れたひとつのクエリから守られます。

データモデルは画面ではなくドメインに沿って設計します。画面は毎月変わりますが、アカウント、サブスクリプション、注文、請求書のようなエンティティはめったに変わらず、レポートを支えます。

  • 顧客が所有するすべての記録にテナントIDを付ける。
  • テナントの分離をアプリケーションだけでなくデータ層でも強制する。
  • 最も頻繁なクエリに合わせてインデックスを作り、遅いクエリを定期的に見直す。
  • ログやイベントなど際限なく増えるデータのアーカイブを計画する。

ステートレスなサービスとバックグラウンド処理

Webサーバーはステートレスに保ちます。セッションは共有ストア、ファイルはオブジェクトストレージに置き、ユーザーを特定のマシンに縛るローカルの状態を持たせません。そうすれば、アプリケーション層のスケーリングはロードバランサーの背後にインスタンスを追加するだけになります。

メール、エクスポート、PDF生成、Webhook、レポートなど、ユーザーへの応答前に終わる必要のない処理はバックグラウンドキューに入れます。キューはトラフィックの急増をならし、時間のかかる処理がリクエストを塞ぐのを防ぎます。

課金、プラン、オンボーディングはアーキテクチャの一部

サブスクリプション課金はあらゆる部分に関わります。顧客が使える機能、支払い失敗時の処理、アップグレード時の日割り計算。プラン名を直接コードに書くのではなく、アプリケーションが確認する上限と機能、つまり利用権としてプランをモデル化します。

セルフサービスのオンボーディングは、サポートチームを増やさずにSaaSビジネスを成長させる鍵です。新規アカウントが最初の意味ある成果に届くまでの時間を測り、それを短くするように初回体験を設計します。

運用できる仕組みを組み込む

観測できないプロダクトはスケールできません。最初のリリースから、障害を短くしリリースを安全にするための基本を含めます。

  • テナントとリクエストのIDを含む構造化ログ。
  • アラート付きのエラー追跡と死活監視。
  • 復元手順を検証済みの自動バックアップ。
  • ステージング環境と素早い切り戻しを備えたデプロイパイプライン。
  • サポートとアカウント管理のための社内管理コンソール。
関連サービスSaaSプロダクト開発課金、オンボーディング、成長の余地を備えたマルチテナント型プロダクト。

参考になりましたか?次の記事をメールで受け取れます。

月に1通。いつでも解除できます。

作る価値のあるプロダクトはありますか?

そのアイデアを、ビジネスで本当に使えるシステムに変えましょう。