# How Firebase projects and apps work
### 影片介紹
- 由 Marina 說明 Firebase 專案與 Firebase 應用程式的關係
- 重點在解釋概念與最佳實踐,不涵蓋實際配置步驟
### Firebase 專案的概念




- Firebase 是 Google 的應用開發平台,提供資料儲存、通知、數據收集等功能
- Firebase 專案為設定和管理各項 Firebase 產品的地方
- 管理團隊權限(擁有者、編輯者、觀察者)與細部資源存取
- 專案同時具備計費設定及與其他服務的整合,並屬於 Google Cloud 專案
### Firebase 應用程式的概念



- 可在同一 Firebase 專案中註冊多個平台變體(Android、iOS、Web、Unity、Flutter)
- 同一專案內的應用共享資料庫、用戶、分析數據及其他資源
- 若應用代表不同業務案例或用途,應考慮使用獨立專案
### Firebase 專案的最佳實踐






- 同一專案內所有應用應屬於相同商業用途,保證資料、用戶和分析數據共享
- 跨平台應用(如 iOS、Android、Web)註冊在同一專案可讓使用者從任何設備登入且資料同步
- 同一平台內的免費版與付費版應共用相同 Firebase 服務與產品設定
- 分離專案可能因分析隔離或安全需求而考慮,但會失去共享用戶數據與資源的優勢
- 不同公司或品牌(白標/客製化)的應用應依「一個 Logo 一個專案」原則分別建立專案
- 分離專案時若仍需跨專案用戶登入,必須實作自訂認證機制來交換與驗證用戶令牌
### 採用最佳實踐的效益



- 共享資源使安全規則等設定一次生效於所有應用,減少逐一更新的麻煩
- 集中管理所有平台的應用便於監控開發流程與統一分析用戶行為與分群
- 使用者可在不同設備與平台間無縫存取相同資料,確保免費與付費版本的連續性
- 第三方整合(例如 Slack、Jira)一經設定便可對所有應用生效,簡化通知與問題追蹤流程
- 減少重複設定與維護成本,降低因操作不當而導致資料外洩的風險
- 統一管理有助於快速定位問題與優化安全、性能與使用者體驗
### 計費方案與管理



- Firebase 提供 Spark(免費)與 Blaze(按量付費)兩種計費模式,適用於不同發展階段
- Spark 計劃適合早期開發與原型測試,達到免費上限後相關產品會暫停服務直至下個計費週期
- Blaze 計劃根據實際使用量付費,同時保留 Spark 的免費額度,適合生產環境使用
- 切換或更新計費方案可在 Firebase 控制台的「使用與計費」設定中進行調整
- Firebase 專案與 Google Cloud 專案相容,可綁定現有的雲端計費帳戶以統一管理
- 建議設置預算警示以避免意外高額費用,並參考相關文件以掌握計費細節與限制
### 影片後續提示

- 未來將介紹如何運用 Firebase 管理不同環境(開發、測試、預發、生產)與使用模擬器
- 鼓勵觀眾訂閱頻道,了解更多 Firebase 產品與實作最佳方法
# Environments and emulators
### 介紹


- 本集主題:Firebase 專案的環境(Environments)與模擬器(Emulators)
- 使用多個 Firebase 專案來支援不同環境,以管理不同的開發階段
- 建立不同環境目的:安全性、避免超出 API 限制、Google Analytics 數據純淨度等
### 開發環境(Development Environment)

- 用於開發新功能、改善代碼、修復 Bug
- 可允許雜亂資料(測試圖片、假資料等)
- 建議每位開發者都有各自獨立的本地開發環境,加快迭代速度,避免干擾
### 測試環境(Testing Environment)


- 用於模擬最接近實際用戶體驗的環境
- 資料應與正式環境分離
- 測試環境可共享,也可為每位測試工程師建立獨立環境
### 預備環境(Staging Environment)

- 最終審核階段使用,模擬正式環境基礎架構
- 資料應真實但虛構(模擬真實情況但不是真的資料)
### 正式環境(Production Environment)

- 最終交付給使用者的環境,影響使用者真實資料
- 操作正式環境資料時需謹慎,避免損害使用者體驗
### 使用不同 Firebase 專案管理環境





- 為不同環境分別建立 Firebase 專案,建議於 Firebase Console 標示正式環境
- 將應用程式各版本(Debug、Release)註冊到對應的 Firebase 專案
- 在代碼中透過設定切換存取對應環境的 Firebase 專案
- 各環境均應設定 Firebase Security Rules,保持安全性一致
### Firebase 本地模擬器套件(Local Emulator Suite)




- 允許本地模擬 Firebase 服務,避免影響真實資料
- 可用於開發、測試及 CI/CD 流程
- 模擬器支援資料庫、認證、儲存空間、雲端函數及 Firebase 擴充功能等
### Firebase Emulator UI



- 視覺化界面,加速本地開發與測試迭代
- 可模擬 Firebase Console 功能,協助確認資料結構、權限配置等
- 官方文件及 Codelab 提供詳細教學資源
# Billing in Firebase
### Firebase 定價方案介紹






- 提供兩種方案:Spark(免費)和 Blaze(用量計費)。
- Spark 是新專案預設方案,不需付款資訊,適合早期開發或僅使用免費功能。
- 使用有配額限制的功能建議切換到 Blaze,避免超過免費配額導致服務中斷。
- Blaze 為用量計費,超出免費配額後才需付費,也可使用 Google Cloud 付費功能。
### 如何選擇適合的定價方案?



- 參考 Firebase 官方文件瞭解各產品配額及計價方式(每日、每月、每小時)。
- 使用 Firebase Blaze 計價計算機,根據產品用量估算每月費用。
- 新用戶可透過 Google Cloud 提供的 90 天免費試用(含 300 美元額度)來體驗付費功能。
### 如何設定 Firebase 計費帳戶?



- 從 Firebase 控制台中升級到 Blaze 方案,即可建立 Google Cloud 計費帳戶。
- Google Cloud 計費帳戶可綁定多個 Firebase 專案,不需重複設定。
- 使用 Google Cloud 或 Google Maps API 等服務亦會自動升級至 Blaze 方案。
### 如何降級 Firebase 定價方案?


- 可以從 Firebase 控制台或 Google Cloud 控制台移除計費帳戶,退回 Spark 方案。
- 降級後將無法部署新的 Cloud Functions、無法存取付費的 Google Cloud 功能(如 Cloud Run、BigQuery)、非預設的資料庫或儲存桶(資料不會刪除,但無法存取)。
### 如何有效控制 Firebase 費用?






- 充分測試程式碼,避免上線後意外產生費用,建議使用 Firebase Emulator Suite。
- 在 Firebase 控制台的用量與計費頁面監控產品用量,掌握即時費用資訊。
- 透過 Google Cloud 設定預算電子郵件提醒,達到指定用量時主動通知。
- 可設定更進階的提醒方式,如 Slack 或簡訊通知,甚至可程式化處理高額用量情況。
- 注意:Firebase 不會自動關閉服務,即使超過設定的預算提醒用量。
# Resources
Overview of Firebase IAM → https://goo.gle/39Ner8F
General best practices → https://goo.gle/3bntxC6
Getting started with Firebase for the web → https://goo.gle/2W4BVz4
Getting started with Firebase in Unity → https://goo.gle/2Pztaal
Getting started with Firebase on iOS → https://goo.gle/3u1WlGL
Getting started with Firebase on Android → https://goo.gle/2Md5wS6
Firebase Authentication → https://goo.gle/3A0gXmr
Firebase pricing plans → https://goo.gle/3HRBnQz
How to turn on billing and still sleep at night → https://goo.gle/3Ohgfpp
Avoid surprise bills → https://goo.gle/3bpiPLi
How Firebase projects and apps work → https://goo.gle/3q2B6ST
Support different environments documentation → https://goo.gle/3cGupCT
Firebase Local Emulator Suite → https://goo.gle/3igbNaT
Other tools for prototyping and testing → https://goo.gle/3Ts2xTw
Connect your app and start prototyping → https://goo.gle/3AELK7k
Local Development codelab → https://goo.gle/3wNFk4p
The Local Firebase Emulator UI in 15 minutes → https://goo.gle/3wMYaZB
Say hello to the helpful Firebase Emulator - a local first UI to boost your productivity → https://goo.gle/3RcszbW
How Firebase Projects and Apps work video → https://goo.gle/3IHc0DG
Environments and Emulators video → https://goo.gle/3GyQCh5
Firebase local emulator suite → https://goo.gle/3igbNaT
Pricing documentation → https://goo.gle/3GUSp1k
Blaze plan calculator → https://goo.gle/3IGifYc
Advanced billing alerts and logic → https://goo.gle/3iyaxF0
Cloud billing documentation → https://goo.gle/3izgjGr
Pricing Frequently Asked Questions → https://goo.gle/3W2zOoC
# Terminology
• Firebase:Google 的行動與網頁應用開發平台,整合多項後端服務。
• Firebase Project:Firebase 專案,管理所有 Firebase 服務與資源配置的單位。
• Firebase App:在 Firebase 專案中註冊的應用平台變體,對應不同作業系統。
• Firebase Console:管理與設定 Firebase 專案及服務的網頁控制台。
• Google Cloud Project:Firebase 專案背後的 Google 雲端專案基礎。
• Firebase 產品:Firebase 提供的各種服務產品,如 Analytics、Crashlytics。
• Firebase 服務:支援應用開發、發布與監控的多元後端功能。
• IAM:身分與存取管理,控制 Firebase 專案中使用者權限。
• Owner 角色:具備 Firebase 專案完整管理與存取權限的使用者。
• Editor 角色:在 Firebase 專案中具有修改大部分資源權限的使用者。
• Viewer 角色:僅具 Firebase 專案中檢視權限的使用者。
• 自訂存取控制:依需求更細緻分配各項 Firebase 產品權限的管理方式。
• Firebase Analytics:用於追蹤與分析使用者行為的數據分析工具。
• Firebase Crashlytics:即時錯誤追蹤工具,監控應用崩潰狀況。
• Firebase Cloud Messaging:推播通知服務,實現跨平台訊息發送。
• Firebase Remote Config:遠端配置工具,動態調整應用程式設定。
• Firebase Dynamic Links:深度連結工具,導向應用內特定內容。
• Firebase Authentication:提供安全使用者身份驗證的服務。
• Spark Plan:Firebase 免費計劃,適用於初期開發與原型測試。
• Blaze Plan:依實際使用量付費的 Firebase 計費模式。
• 用量限制:Firebase 產品在免費計劃下的使用上限設定。
• 配額管理:管理各項 Firebase 服務使用量以避免超額使用。
• 預算警示:在 Blaze 計劃中設定的用量與支出提醒功能。
• Firebase 整合:將 Firebase 服務與應用程式連結並配置的過程。
• 安全規則:控制對 Firebase 資料庫存取權限的設定機制。
• 數據共用:多平台應用共享相同資料與使用者資訊的特性。
• 平台變體:針對不同作業系統(Android、iOS、Web 等)的應用版本。
• 相同商業用例:多平台應用基於相同業務需求共享資源的原則。
• 數據隔離:確保不同應用間資料與隱私互不干擾的策略。
• 私有標籤:為不同公司客製化品牌而配置獨立 Firebase 專案。
• 自訂驗證:跨專案整合使用者身份的自定義認證流程。
• 統一分析:所有平台共用相同分析數據,方便跨平台比較。
• 統一資源配置:在單一 Firebase 專案中一次配置所有服務資源。
• 整合通知:跨平台整合推播訊息與應用內通知的功能。
• 整合監控:集中監控應用性能、錯誤與用量的 Firebase 功能。
• 專案設定:管理 Firebase 專案中各項參數與服務配置。
• 計費設定:管理 Firebase 專案支出、付款方式與計費方案。
• Google Analytics:Google 的數據分析服務,與 Firebase 整合使用。
• 事件紀錄:記錄使用者操作與系統事件以供後續分析。
• 日誌監控:利用工具檢視應用運行狀態與錯誤訊息。
• 開發環境:用於應用程式開發與測試的本地或模擬器環境。
• 生產環境:應用程式正式上線並面向使用者的運行環境。
• 模擬器:在電腦上模擬真實裝置運行應用的測試工具。
• 實體裝置:用於測試應用程式於真實硬體環境下的運行。
• 跨平台開發:針對多平台(Android、iOS、Web 等)進行應用開發的模式。
• 自動化部署:利用工具自動建置、測試與發佈應用程式的流程。
• 版本管理:追蹤應用程式程式碼變更與歷史版本的系統。
• 持續整合:自動合併與測試程式碼以提升軟體品質的流程。
• 使用者體驗:使用者在應用程式中獲得的整體互動與感受。
• 數據隱私:保護使用者資料與隱私安全的重要策略與措施。
• 整合工具:Firebase 與外部工具(如 Slack、Jira)的連結整合。
• 成本控管:在 Firebase 計費計劃中管理支出與預防意外費用。
• 單一專案多平台:同一 Firebase 專案內註冊不同平台應用的實踐。
• 多專案管理:根據不同應用需求分離 Firebase 專案以確保資料獨立。
• API 整合:將 Firebase API 與應用程式功能相連接的技術。
• 測試環境:用於驗證應用功能與性能的模擬或實體測試平台。
• 數據分析:收集並解讀應用使用數據以提升產品效能的過程。
• 資源共享:同一 Firebase 專案內多平台應用共享相同後端資源。
• 實時更新:Firebase 服務提供的即時數據同步與更新功能。
• 用戶認證:確保使用者身份合法並授權存取應用服務的機制。
• 服務擴展性:Firebase 平台可隨應用需求增長而靈活擴展。
• 資料安全:保護應用資料免受未授權存取與攻擊的安全措施。
• Firebase 專案:管理 Firebase 服務與資源配置的基本單位。
• Firebase 應用程式:在 Firebase 專案中註冊的各平台應用版本。
• 環境:運行應用所需之硬體與軟體配置集合。
• 開發環境:用於撰寫新功能、修正錯誤與進行初步測試的環境。
• 測試環境:模擬生產環境以驗證功能正確性的測試平台。
• 預備環境:模擬生產條件進行最終審查的部署環境。
• 生產環境:供終端用戶實際使用的正式上線環境。
• 部署管道:從開發到生產的自動化部署流程。
• 資料隔離:確保各環境間數據獨立以維護安全的措施。
• API 限額:各服務在一定期間內的使用上限設定。
• Firebase 控制台:管理與設定 Firebase 專案的網頁介面。
• 環境標籤:用於識別 Firebase 專案所屬環境類型的標記。
• Debug Build:用於開發與除錯的非正式應用版本。
• Release Build:用於正式發佈的穩定應用版本。
• 版本候選:待最終審核發布的應用版本候選。
• 自訂驗證:跨專案整合使用者身份的自定義認證流程。
• Firebase 安全規則:控制資料存取權限的設定策略。
• 資料同步:確保多環境中數據一致性的技術機制。
• 用戶資料隔離:不同環境中分離使用者資料以防混淆。
• 本地模擬器套件:在本機上模擬 Firebase 服務的工具集合。
• 模擬器:在本地模擬真實 Firebase 服務行為的軟體工具。
• Firebase Emulator UI:提供圖形介面操作本地模擬器的視覺工具。
• SDK:軟體開發工具包,支援應用程式整合 Firebase 服務。
• REST API 呼叫:通過 HTTP 協定與 Firebase 服務進行互動的方式。
• CI/CD 管道:持續整合與持續部署的自動化工作流程。
• 部署配置:各環境中應用部署所需的設定參數。
• 代碼庫:應用程式所有原始碼的集合。
• 持續整合:自動合併與測試程式碼以提升品質的流程。
• 自動化測試:利用工具自動執行測試案例的過程。
• 原型測試:在早期階段驗證應用概念與功能的測試。
• 效能測試:測試應用在各環境中運行速度與穩定性的過程。
• 安全測試:檢查應用在各環境中安全性與漏洞的測試。
• 測試工具:用於驗證應用功能與效能的軟體工具。
• 開發者工具:協助撰寫與除錯程式碼的輔助軟體。
• Cloud Functions:用於執行後端邏輯的無伺服器運算服務。
• Cloud Storage:Firebase 提供的雲端檔案儲存服務。
• Firebase Authentication:提供使用者身份驗證服務的工具。
• Cloud Messaging:Firebase 推播通知服務,實現跨平台訊息發送。
• Firestore:Firebase 的 NoSQL 雲端資料庫服務。
• 整合工具:協助連接 Firebase 與其他服務(如 Slack、Jira)的軟體。
• 用量監控:追蹤各服務使用數據以防超額的機制。
• 預算警示:當使用量接近限額時自動發出提醒的功能。
• 自動化部署:利用工具自動將應用版本推送到各環境的流程。
• 部署版本管理:管理各環境中應用版本升級的系統。
• 本地開發:在本機進行應用測試與調試的開發過程。
• 模擬資料:用於測試環境中的虛擬數據集。
• 使用者體驗測試:驗證最終用戶互動與感受的測試過程。
• 資料備份:定期備份生產環境中重要數據的策略。
• 計費方案:Firebase 提供的免費與付費服務計劃選項。
• 自動化監控:利用工具自動追蹤應用效能與錯誤的系統。
• Firebase 定價計劃:Firebase 提供的兩種主要定價方案,分別為 Spark 與 Blaze 計劃。
• Spark 計劃:Firebase 預設的免費方案,無需支付資訊且提供基本功能。
• Blaze 計劃:按使用量付費的方案,適用於生產環境與高流量應用。
• 付費模式 (pay-as-you-go):根據實際使用量進行收費的計費模式。
• 雲端計費帳戶:連結 Firebase 與 Google Cloud 服務以管理費用的帳戶。
• 無成本 Firebase 產品:包含 Cloud Messaging、Crashlytics、Remote Config 等免費使用的服務。
• 付費 Firebase 產品:部分服務超出免費配額後需付費的功能。
• 使用量配額:各 Firebase 產品每日、每月或每小時的免費使用上限。
• 月度使用限額:每月內免費使用的最高數量,超過後將開始計費。
• API 限額:各服務調用次數的限制,以防過度使用。
• Firebase Cloud Messaging:提供免費推播通知服務,適用於大部分應用。
• Firebase Crashlytics:免費提供即時崩潰報告功能,協助除錯。
• Firebase Remote Config:允許動態調整應用設定的服務,免費提供基本功能。
• Blaze 計劃計費方式:僅對超出免費配額的使用量進行收費。
• Google Cloud 服務整合:Blaze 計劃中可額外使用 Google Cloud 的產品與功能。
• Cloud Run:基於容器的無伺服器運算平台,可隨需求擴展資源。
• BigQuery Streaming:支援實時數據流輸入至 BigQuery 進行分析的功能。
• Blaze 計劃計算器:用於估算 Blaze 計劃下月度費用的工具。
• Google Cloud 免費試用:新用戶可享 90 天及指定金額免費試用信用。
• 90天試用期:新用戶可在試用期間免費探索 Blaze 計劃功能。
• 支付方式:支援信用卡、銀行帳戶及 PayPal 等多種支付選項。
• 計費帳戶設置:設定與管理 Google Cloud 計費帳戶以啟用 Blaze 計劃。
• 升級到 Blaze 計劃:將 Firebase 專案從 Spark 轉換至 Blaze 的流程。
• 降級到 Spark 計劃:移除計費帳戶後將 Firebase 專案降級回免費方案。
• 支付資料:建立計費帳戶時所需提交的信用卡或其他支付資訊。
• Google Cloud Console:管理 Google Cloud 資源與計費帳戶的官方平台。
• Firebase 升級按鈕:Firebase 控制台中用於切換定價方案的功能按鈕。
• 成本估算工具:預測 Blaze 計劃月度費用的計算工具。
• 按使用量計費:僅對超出免費配額部分依實際使用量收費的模式。
• 使用量監控:追蹤各 Firebase 產品實際使用情況以控制成本。
• 預算警示:當使用量接近設定上限時自動發送警告通知的功能。
• 成本控制:採取措施管理與限制 Firebase 服務費用的方法。
• 成本最佳實踐:推薦的策略以避免意外高額費用的發生。
• 預算設定:在計費帳戶中設定支出上限以管控成本的過程。
• 成本分析:分析 Firebase 產品使用數據以瞭解支出情況的過程。
• 使用量日報告:每日生成的各服務使用量數據報告。
• 免費限額:各項 Firebase 服務在 Spark 計劃下提供的免費使用上限。
• 使用限制:Firebase 對各服務免費使用數量的限制政策。
• 產品配額:每個 Firebase 服務所設定的具體使用量上限。
• Cloud Functions 部署限制:降級後無法部署新雲端函數的限制。
• 非預設資料庫實例限制:降級後無法訪問非預設資料庫的限制。
• 非預設雲端儲存桶限制:降級後無法使用非預設儲存桶的限制。
• 服務中斷風險:超出免費配額可能導致服務被暫停的風險。
• 突增用量管理:應對流量暴增以避免突發高額費用的策略。
• 成本警示整合:與 Slack、短信等系統整合自動發送成本警示。
• 自動化計費邏輯:程式化管理與監控 Firebase 計費的自動化流程。
• 雙向整合:Firebase 與 Google Cloud 計費系統之間的緊密整合。
• 服務擴充性:Blaze 計劃中提供額外資源以應對應用增長的能力。
• 預付式收費模式:針對部分 Google Cloud 服務可能提供的預付計費方式。
• 成本管理儀表板:在 Firebase 控制台中展示使用量與費用的視覺化工具。