BaaS(Backend as a Service)
BaaSとは
BaaS(Backend as a Service)は、データベース・認証・API・ファイルストレージといったバックエンド機能一式をクラウドサービスとして提供する仕組みです。代表例はSupabaseやFirebaseです。
自前でサーバーを書く代わりに、テーブルを定義するだけでREST APIやリアルタイム通信が自動生成され、フロントエンドから直接呼び出せます。「サーバーを自分で建てない」という点では [[サーバーレス・Lambda]] と似ていますが、サーバーレスが「関数単位の実行環境」を指すのに対し、BaaSは「DB・認証込みのバックエンド一式」を指す点が異なります。
提供される主な機能
| 機能 | 内容 |
|---|---|
| データベース | マネージドな [[PostgreSQL]] 等。テーブル定義から [[REST API]] を自動生成 |
| 認証 | ユーザー登録・ログイン・OAuthを標準搭載([[認証と認可]]) |
| リアルタイム通信 | DBの変更をクライアントへプッシュ配信 |
| アクセス制御 | [[Row Level Security(RLS)]] でテーブルの行単位に権限を設定 |
自前サーバーとの違い
従来型の構成では、ルーティング・ORM・認証ミドルウェアを自分で実装したサーバーがDBとクライアントの間に立ちます。BaaS構成では、クライアントがDBへほぼ直接アクセスします。権限管理をアプリのコードではなくDB側のポリシー(RLS)に委ねるため、サーバーコードを書かなくても安全性を保てるのが特徴です。
注意点
- クライアントに埋め込む公開鍵(anon key)は誰でも読める前提で扱う。書き込み系の操作は必ずRLSで絞る
- 複雑な業務ロジック(外部APIとの連携、重い集計処理など)はEdge Functionsのような[[サーバーレス・Lambda]]的な仕組みと組み合わせる
- スキーマ変更やベンダーロックインへの備えは自前で運用ルールを持つ必要がある
関連技術とのつながり
- [[PostgreSQL]] — 多くのBaaSの実体はマネージドPostgreSQL
- [[REST API]] — テーブル定義から自動生成されるのが典型的
- [[認証と認可]] — ユーザー管理・OAuthがセットで提供される
- [[サーバーレス・Lambda]] — 複雑な処理を足すときの補完技術
- [[Row Level Security(RLS)]] — クライアントの直接アクセスを安全にする鍵
Q: BaaSの説明として正しいのはどれ?
- [ ] 関数単位で課金・実行されるコード実行環境のみを指す
- [x] データベース・認証・APIなどバックエンド機能一式をクラウドサービスとして提供する仕組み
- [ ] フロントエンドのビルドツールの一種
解説: BaaSはDB・認証・APIなどをまとめて提供するサービスで、Supabase・Firebaseが代表例です。
Q: BaaS構成で、クライアントからの直接アクセスを安全にするために使う仕組みはどれ?
- [ ] CDNのキャッシュ
- [ ] ビルドツールのコード分割
- [x] Row Level Security(RLS)によるテーブル行単位の権限制御
解説: BaaSはクライアントがDBへほぼ直接アクセスするため、DB側のRLSポリシーで権限を絞ることが安全性の要になります。
Q: BaaSとサーバーレス(FaaS)の違いとして正しいのはどれ?
- [x] BaaSはDB・認証込みのバックエンド一式、サーバーレスは関数単位の実行環境
- [ ] BaaSは常にオンプレミス環境でのみ動作する
- [ ] サーバーレスは必ずデータベースを内蔵している
解説: どちらも「自分でサーバーを建てない」点は共通ですが、BaaSはバックエンド一式、サーバーレスは関数単位の実行という違いがあります。