0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マネージドバックエンド(BaaS)とは何か?サーバーレスとの違いも含めて整理する

0
Posted at

はじめに

技術面接にて自分が知らない単語が出てきたので調べたのでこの記事でざっくり整理してみた。

マネージドバックエンドとは

一言でいうと、バックエンドまわりの面倒くさいことを全部サービスに任せてしまう、という考え方だ。

普通にバックエンドを自前で作ろうとすると、こういう作業が発生する。

  • サーバーのセットアップと管理
  • データベースの設計・構築
  • 認証機能の実装
  • スケーリングの設定
  • セキュリティパッチの適用

これを全部自分でやるのはなかなか大変で、特に個人開発やスタートアップだと「そこに時間使いたくない」となりがち。マネージドバックエンドはそのあたりをまるっと肩代わりしてくれる。
代表的なサービスとしては Firebase(Google)、Supabase、AWS Amplify などがある

BaaSとは

BaaSは Backend as a Service の略で、マネージドバックエンドとほぼ同じ意味で使われる。

クラウドサービスには似たような名前がいくつかあって、最初は混乱するけど並べてみると分かりやすい。

種別 正式名称 何を提供するか
IaaS Infrastructure as a Service AWS EC2 サーバーなどのインフラ
PaaS Platform as a Service Heroku アプリの実行環境
SaaS Software as a Service Slack ソフトウェアそのもの
BaaS Backend as a Service Firebase バックエンド機能一式

「マネージドバックエンド = BaaS」と覚えておけばまず問題ない。

BaaSで何ができるのか

BaaSが提供してくれる主な機能はこのあたり。

認証

メールアドレス+パスワードはもちろん、GoogleやGitHubのOAuth認証も数行で実装できる。JWTの管理やセッション管理も自動でやってくれるので、認証まわりで詰まることがほぼなくなる。

// Supabaseの例:Googleログインがこれだけで動く
const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'google'
})

データベース

リアルタイムでデータの変更を検知できるのが特徴的で、チャットアプリや通知機能を作るときに便利。FirebaseはNoSQL、SupabaseはPostgreSQLと、サービスによってDB種別が異なる。

// Firebaseのリアルタイム購読:データが変わると自動で再描画される
onSnapshot(doc(db, "users", userId), (doc) => {
  setUser(doc.data())
})

ストレージ

画像や動画のアップロード・管理もSDKから簡単に操作できる。CDN配信やアクセス権限の設定も標準で用意されている。

サーバーレス関数

決済処理やメール送信など、フロントエンドからは直接呼びたくない処理はサーバーレス関数として書ける。

// Supabase Edge Function
Deno.serve(async (req) => {
  const { userId } = await req.json()
  // StripeやSendGridを呼ぶような処理をここに書く
  return new Response(JSON.stringify({ success: true }))
})

サーバーレスとの違い

「BaaSってサーバーレスのこと?」と思いがちだけど、厳密には別物だ。

BaaS(マネージドバックエンド) サーバーレス
何か サービス インフラの仕組み
提供するもの 認証・DB・ストレージなど一式 関数を動かす仕組みだけ
Firebase, Supabase AWS Lambda, Cloudflare Workers

サーバーレスはあくまで「サーバーを管理せずに関数を実行できる仕組み」のことで、BaaSはその上にアプリに必要な機能をセットにして載せたもの、というイメージ。実際、BaaSの内部ではサーバーレス技術が使われていることが多いけど、使う側はそれを意識しなくていい。

BaaSはサーバーレスを含む、より広い概念と理解しておけばOK。

向いているケース・向いていないケース

正直なところ、BaaSが万能というわけではない。

BaaSが向いている場面

  • 認証・CRUD・ファイル管理が中心のアプリ
  • 個人開発やスタートアップで早くMVPを出したいとき
  • フロントエンドエンジニアがバックエンドも一人で担当するとき

自前バックエンドの方がいい場面

  • 金融・医療など複雑なビジネスロジックが必要なとき
  • 既存システムとの連携が複雑なとき
  • ベンダーロックインをどうしても避けたいとき

規模が大きくなってくると、BaaSの従量課金コストが自前サーバーより高くなってくるケースもある。最初はBaaSで始めて、必要になったら移行するという戦略が現実的だと思う。

まとめ

用語 ざっくりいうと
マネージドバックエンド バックエンドの管理をサービスに丸投げするアプローチ
BaaS マネージドバックエンドの正式名称。ほぼ同義
サーバーレス 関数を動かすためのインフラの仕組み。BaaSより狭い概念
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?