跳至主要內容
ESC
Study Jam:雲端基礎實作 — 第 8/10 篇

Firebase 無伺服器應用開發

Firebase 無伺服器應用開發

課程概述

Firebase 是 Google 的行動與 Web 應用開發平台,把認證、即時資料庫、雲端函式這些服務都整合在一起。這堂課就帶你用 Firebase 全家桶,做出一個完整的無伺服器應用。

Firebase 無伺服器應用架構:Web 與行動客戶端經 Hosting 和 Authentication 取得身分,Security Rules 在資料路徑檢查權限,再存取 Firestore、Storage 與 Functions;即時資料變更回推客戶端,本地 Emulator 隔離測試整套服務

Firebase 的核心不是「前端直接碰資料庫」,而是每次資料存取都要帶 Auth 身分並通過 Security Rules。 Firestore 變更可即時回推,Storage/Firestore Event 則可喚醒 Functions 執行後端邏輯; 下方 Emulator 把同一條路徑搬到本機,避免測試直接碰生產資料。

你將學到

  • 設定 Firebase 專案並連結 GCP
  • 使用 Cloud Firestore 進行 CRUD 操作
  • 實作 Firebase Authentication 使用者認證
  • 部署 Cloud Functions for Firebase
  • 使用 Firebase Security Rules 保護資料

核心概念

Firebase 核心服務

服務功能替代方案
Cloud FirestoreNoSQL 即時資料庫Cloud Datastore
Firebase Auth身份認證Identity Platform
Cloud Functions後端邏輯Cloud Run
Firebase Hosting靜態網站託管Cloud Storage
Firebase Storage檔案儲存Cloud Storage

Firestore 資料模型

Firestore 使用 Collection → Document → Field 結構:

// 新增文件
db.collection('users').doc('user1').set({
  name: '小明',
  email: 'ming@example.com',
  createdAt: firebase.firestore.FieldValue.serverTimestamp(),
});

// 即時監聽
db.collection('messages')
  .orderBy('timestamp')
  .onSnapshot((snapshot) => {
    snapshot.docChanges().forEach((change) => {
      console.log(change.doc.data());
    });
  });
Firestore 路徑以 Collection 與 Document 交替組成,Document 含 Fields 並可再有 Subcollection;Query 經 Index 找到文件後由 onSnapshot Listener 即時更新 UI

Firestore 路徑必須在 Collection 與 Document 之間交替;Document 可有 Fields,也能再掛 Subcollection, 但本身不是關聯式資料表。查詢先走 Index,再由 onSnapshot 把符合文件的變更推到 UI。

Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth != null;
      allow write: if request.auth.uid == userId;
    }
  }
}
Client SDK 必須同時通過 Authentication 與 Security Rules;Admin SDK 則以服務帳戶 IAM 授權,會略過 Rules。後端程式不能把兩條安全邊界混為一談。
Firestore 兩條授權路徑:Client SDK 帶 Auth Token 經 Security Rules 判斷後才可存取,Admin SDK 則以 Service Account IAM 直接授權;拒絕分支在抵達資料庫前停止

Client SDK 的每次存取都先比對路徑與 request.auth、resource、request.resource,只有 Allow 才能進入 Firestore。Admin SDK 不經 Security Rules,而是依 Service Account IAM;兩條路徑不可混為一談。

實作重點

  • Firestore 有兩種模式:Native mode(即時同步)與 Datastore mode(與舊版 Cloud Datastore 相容,適合伺服器端應用,不支援即時/離線功能)
  • 建立專案時需選擇 Firestore 位置,一旦設定無法更改
  • Security Rules 是安全關鍵,永遠不要在生產環境使用開放規則
  • Firebase Emulator Suite 可在本地端模擬所有 Firebase 服務

Skill Badge 指引

Lab 連結Develop Serverless Apps with Firebase — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:雲端基礎實作 — 8/10 完成 查看系列全覽 →

留言討論

徽章解鎖!