為什麼Firebase這麼紅?從它解決什麼問題開始

為什麼Firebase這麼紅?從它解決什麼問題開始

今年 5 月的 Google IO 17 可說是 AI 與 Firebase 的舞台,光是與 Firebase 有關就有三十幾個場次,不論是介紹、討論、應用等,Firebase 能成為聚光燈的焦點是有其原因的,本文章從它解決什麼問題開始。

資料儲存

不論是 Web 網頁、iOS 或 Android 手機,一個較有功能性的應用程式 (APP) 都需要儲存資料,聊天的 APP 需要儲存會員資料與訊息,討論型的網站需要儲存會員與文章、回應等資料,遊戲需要會員與關卡、城鎮等地圖資料,點餐 APP 需要儲存餐點、價格、顧客與訂單等資料,這些資料都需要儲存在「資料庫」中。

儲存在那裏?

如果是私人資料,如記帳、餵食時間、約會等,可以儲存在手機內 APP 專用的資料庫,大都使用 SQLite 嵌入式資料庫,方便又直接。如果資料有「變動」需求,那就需要一台伺服器 (Server),並在這台 Server 中安裝資料庫管理系統 (DBMS),再將資料儲存在伺服器中,例如餐廳的菜單、網站文章、購物網站的商品、全台灣的美食地點等。

如何存取?

不論是讀取或儲存,想從伺服器內的 DBMS 中讀取資料到手機上展示,或是將使用者輸入或選擇的資料儲存到 DBMS 中都是累人的事情,因為安全考量,我們不會讓手機直接存取資料庫 (如果被反組譯,資料庫的帳號/密碼與資料結構曝露風險),而是透過中介的 AP 應用程式 (Application Layer,或簡稱後台程式),設計在伺服器中執行並負責存取的程式後,再由 AP 層與 APP 手機端互動後得到或傳遞資料。中介的 AP 層可使用 Node.js、JEE、ASP.NET、PHP 等技術來開發這些應用程式,在這些 AP 端的程式中設計能確保存取權限與資料安全的機制。

如何傳遞?

手機 APP 與 AP 應用程式之間大多透過 HTTP、HTTPS 通訊協定,再以 JSON 資料格式傳遞資料,例如點餐 APP 一開始以 HTTP 加參數方式送出要求 (Request) 封包到 Server,在 Server 中執行的 AP 應用程式再到 DBMS 中讀取餐點資料後,將資料轉成 JSON 格式後,透過回應 (Response) 封包將資料傳回手機端,手機 APP 再解析 JSON 資料後,設計清單元件展示資料的方法。

如何推播訊息?

如果功能中包含主動訊息推播,也一定要準備伺服器、申請憑證、開發後端設備 Token (ID) 的儲存,發送推播訊息的後台程式。

成本問題

每個專案都會考慮成本因素,包括人力成本、設備成本、維護成本與開發成本等,若以一般方式開發網頁、手機 APP 專案時:

人力成本

開發前端需要 Android、iOS 人力成本,開發後台需要 PHP 或 ASP.NET 的人力成本,架設伺服器需要系統工程人員,資料庫也同樣需要設計資料庫表格、View、Trigger 與預儲程序等人力。

設備成本

準備伺服器、作業系統、資料庫管理系統都是很高的成本。

維護成本

要能維持 Android、iOS、後台程式與系統工程人員都能更新、修改這個專案的變動成本。

Firebase解決什麼問題?

【影片】為什麼使用 Firebase? 它能解決目前開發的那些問題與工作?

會員系統

提供完整的 API,不論是 Web、Android 或 iOS 都能快速支援手機中的 Email/密碼、Google、Facebook、Twitter、Github 等帳號登入,日前更加入電話號碼簡訊驗證,快速成為 APP 專屬會員。

讓APP能以手機號碼註冊成為會員,使用Firebase 2017的Phone簡訊驗證

使用者註冊成功發送通知郵件,透過Firebase Functions只要十幾行code

資料儲存

將使用者的資料,如匿稱、消費記錄、商品、位置、喜好等儲存在雲端資料庫。

使用Android Studio 2.2.2 開發Firebase – Database篇

Android Studio 2.2.3開發Firebase的CRUD (上)

在Android Studio中使用2017新版Firebase加快開發過程之[雲端資料庫]

雲端訊息推播

Firebase Cloud Messaging 是 Google 最新一代雲端推播,更快速能在應用程式中導入推播功能。

Firebase 雲端訊息-Android專案導入環境建置與Instance ID

雲端檔案儲存

傳統需開發一堆後台的接收、轉存、權限、URL 檔案網址等都在 API 的幫助下,幾行程式就能快速完成功能。

[影片] Android Studio與Firebase實作類似Instagram功能,上傳手機照片至雲端(Android 6.0)

使用Firebase與Glide實作「最新消息」清單,圖檔取得及顯示

Cloud Functions

對於 No-SQL 的資料庫 (JSON tree) 很頭痛嗎? 有最厲害的幫手,除了能監控 Realtime database 中的資料並設計程式外,更能快速開發出自動推播、帳號處理等原本後台功能,現在只需使用 node.js,馬上變身成為可隨時擴充的雲端後台管理系統。

使用Firebase Functions前的環境準備與開發工具安裝,Serverless真的來了

使用Firebase Functions設計隨時傾聽資料新增的function,並自動建立特定資料

使用Firebase Functions的HTTP Triggers設計簡易的Android網路登入驗證功能,連PHP、ASP、Servlet都不用了

Hosting

寫了如版權宣告、產品介紹、公司簡介等網頁後,要找伺服器、上傳、再設定主機嗎? 都不用了,你寫的網頁 (node.js) 功能,只要一個指令就佈署到 Firebase 的雲端主機,馬上就上線、馬上就幫你服務廣大的客戶了。
Firebase課程成果影片,實作出類Instagram分享相片/雲端儲存/訊息推播功能

This Post Has 2 Comments

  1. Mon

    請問firebase 的database 可以存取影片嗎

    1. Hank Tom

      可放 video 的位置,通常不會把 video 直接放 database

發佈留言