ソリューション
テナントごとに分離したデータベース
顧客同士でテーブルを共有できない場合は、テナントごとに専用の Relyt One プロジェクトを用意しましょう。プロジェクトはそれぞれ独立した PostgreSQL データベースで、専用のストレージ、コンピュート、認証情報を持ち、バックエンドから API を 1 回呼び出すだけで作成できます。
しくみ
01
テナントの登録時にプロジェクトを作成
バックエンドが API キーで Open API を呼び出し、リージョンと、テナントのデータベースのオーナーロールに使うパスワードを渡します。プロジェクトにはメインブランチとプライマリコンピュートが付いています。
curl -X POST "https://relyt.one/api/v1/projects" \ -H "Authorization: Bearer $RELYT_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"name\":\"tenant-$TENANT_ID\",\"orgId\":\"$ORG_ID\",\"region\":\"$REGION_ID\",\"password\":\"$TENANT_DB_PASSWORD\"}"02
テナントの接続情報を保存
ステータスが READY になるまでプロジェクトのコンピュート一覧を確認し、host をテナントのレコードと一緒に保存します。スキーマのマイグレーションを実行し、標準の PostgreSQL ドライバーで接続してください。
curl "https://relyt.one/api/v1/projects/$PROJECT_ID/computes" \ -H "Authorization: Bearer $RELYT_API_KEY"03
テナントの退会時にプロジェクトを削除
プロジェクトを削除すると、そのコンピュートが削除され、プロジェクトとブランチは削除済みになります。
curl -X DELETE "https://relyt.one/api/v1/projects/$PROJECT_ID" \ -H "Authorization: Bearer $RELYT_API_KEY"
今すぐ使える機能
テナント間で何も共有しない
テナントごとにデータベース、ロール、パスワード、接続文字列が別々です。あるテナントのデータベースで起きた長いクエリ、ロック、失敗したマイグレーションは、そのデータベースの中にとどまります。
テナントごとのコンピュート
プロジェクトはそれぞれ専用のコンピュートで動き、サイズは CU 単位です(1 CU = 1 vCPU + 4 GB RAM)。テナントがアイドル状態になると、そのコンピュートは一時停止でき、次の接続で再開します。
テナント単位でブランチ
テナントのプロジェクトはどれもブランチに対応しているので、本番で実行する前に、あるテナントのデータをコピーオンライトで分岐させてマイグレーションを試せます。
最初から最後まで自動化
REST の Open API でプロジェクトの作成、確認、削除ができます。最初の作成リクエストの処理中に同じリクエストを送ると 202 を返し、プロジェクトが 2 つ作られることはありません。
注意事項
- 無料プランで作成できるプロジェクトは 5 つまでです。そのため現時点では、テナントごとに 1 プロジェクトという構成は少数のテナント向けです。プランの上限を超えてプロジェクトを作成すると 403 を返します。
- Relyt One はリクエストをテナントに振り分けません。各テナントと接続情報の対応はアプリ側で管理してください。