Categories
程式開發

App後端服務,你是選擇AWS還是Firebase?


App後端服務,你是選擇AWS還是Firebase? 1

我開發原生Android應用程序有很長一段時間,最近開始用Flutter開發移動應用程序,並同時使用Firebase和AWS作為後端服務。但最近,我不得不為一個移動應用程序找到一個解決方案,這花費我很多時間來選擇合適的後端服務。

那App的後端服務,你是選擇AWS還是Firebase。當然,並不是說AWS就比Firebase好,或Firebase比AWS好。正確的問題應該是:哪種解決方案最適合我的需求?

在此,我分享自己的觀點和理解,或許能幫你選擇正確服務。

App後端服務,你是選擇AWS還是Firebase? 2

1.服務共同點

核心功能有:

  • 身份驗證
  • 推送通知
  • 存儲
  • 託管
  • 分析

這些功能,它們都有。因此,你可以用這些平台輕鬆部署無服務器解決方案。

2.怎樣整合後端與應用程序?

集成這些服務最普遍的方法是使用它們的SDK,但是這符合你的需求嗎?

Firebase

Firebase為Android、iOS和Web提供SDK,因此,作為前端開發人員,你可以輕鬆構建數據驅動的應用程序,而不必受制於後端技能。

Firebase還有一個REST API,你能用它構建自己的自定義API(根據需求)。

AWS

AWS為移動開發提供一種非常好的解決方案AppSync,你可以把它集成到你的Android、iOS和React Native中。

AWS AppSync還未提供對Flutter的官方支持,不過,你可以看下這裡

如果你想使用Flutter開發前端,就必須創建自己的API。

建議

  • 考慮解決方案的複雜性和業務需求,並考慮可伸縮性,決定是否要創建API。

  • 如果你希望擁有一個API,那麼就用不到SDK了。另外,對於較大的項目,擁有一個API更有意義。

  • 如果你的解決方案很簡單,並且不想在API上投資,那麼選擇提供SDK的服務/前端框架,以便能直接將後端集成到你的前端。

3.雙方的各自優勢

Firebase和AWS各有優勢,哪個更適合你。

AWS

1. 設置不同環境

在AWS中,用於開發、測試和生產的不同環境更加“優雅”。

當然,你也能在Firebase中這樣做,但必須建立不同項目,而這需要更多時間。

2. 持續部署

如果你用過Netlify之類的服務,那麼AWS為持續部署提供另一種優雅的解決方案。同樣,你也可以使用谷歌云來實現CD,但它需要更多配置。

3.GraphQL

面向移動應用程序的AWS Amplify SDK與GraphQLApollo緊密集成。

4. 選擇數據庫

在後端用哪種類型的數據庫,完全由你控制,而Firebase只提供NoSQL數據庫。

5. 單包解決方案

AWS提供應用程序可能需要的所有服務。因此,AWS是一個雲解決方案,你可以完全依賴它來滿足所有需求。

如果整個後端都在一個地方,這會更容易理解和維護。

Firebase

1. 專用數據庫

Firebase提供兩種專用數據庫服務:Cloud Firestore和Realtime Database。這兩個數據庫都是NoSQL數據庫,因此,你在部署數據驅動的應用程序時不必太操心數據庫設置和查詢編寫。

只要你的需求和要求比較簡單,並且知道它未來不會變得更複雜,那麼你就可以使用NoSQL數據庫。

2. 可調用的函數

得益於Firebase雲函數,你可以創建雲函數並通過URL設置觸發器,以便將偵聽器寫入數據庫。

這些函數類似於AWS Lambda,但是從應用程序觸發一個Lambda需要你設置一個API網關並添加授權邏輯,這使得實現起來有些困難。

3.質量控制服務

Firebase提供很多服務來監控和保證應用程序的質量。這些服務包括:

  • 動態鏈接:將用戶導航到你應用程序的正確位置,無論它是否已經安裝。
  • 遠程配置:使用服務器端配置自定義並試驗應用程序行為。
  • 測試實驗室:跨設備測試App。
  • 應用內消息傳遞:發送用戶參與活動。
  • 分析:幫你規劃未來的發布和用戶參與策略。
  • ML Kit:在應用程序的前端或後端為你的解決方案添加機器學習功能。

App後端服務,你是選擇AWS還是Firebase? 3

4.平台定價(AWS vs Firebase)

這兩個平台的價格都很有吸引力,甚至還有一個免費檔,所以你無需為任何東西付費,除非你有相當數量的活躍用戶。

AWS

AWS掌握其服務的定價,他們以便宜得多的價格提供許多很棒的服務。隨著時間推移,他們實際上能將服務價格降低80%以上。

這就是為什麼,你會發現AWS比GCP更便宜。對於構建實時應用程序,AWS提供了相對昂貴的DynamoDB

對於雲函數,AWS提供的服務價格是Firebase的一半。

Firebase

雖然AWS的某些服務更便宜,但Firebase提供一些完全免費的服務,比如:

  • 用戶認證——通過FirebaseAuth,等同於AWS Cognito
  • 推送通知——使用Firebase雲消息傳遞,相當於AWS中的簡單通知服務。

對於構建實時應用程序,與AWS相比,Firebase的設置成本似乎要低得多,也更容易。 Firebase負責數據的實時同步,你無需過多操心。

隨著用戶數量的增加,Firebase顯然是構建實時應用程序的更好選擇。但是如果不小心優化你的查詢,Firebase會給你寄來一張3萬美元的賬單

順便說一句,谷歌在了解發生的事情后,已經放棄一些應用場景。有些東西比平台定價更貴……

5.時間和人力

這是一個需要考慮的重要因素,因為你將需要這些資源來設置、構建和維護應用程序架構。

Firebase

Firebase非常簡單,容易上手。實際上,前端開發人員可以創建和維護整個後端,只需要一點設置方面的知識。

對於創建實時應用程序,Firebase處理了大量的複雜性,並為你提供一個非常強大且易於使用的SDK,幫你節省大量時間,而時間就是金錢。

AWS

因為AWS提供的服務是Firebase的十倍,所以它的使用和維護也要復雜十倍。我想說的是,與Firebase相比,AWS有一點學習曲線。

對於創建實時應用程序,你需要搭配使用GraphQL API和DynamoDB實例(同樣是一個NoSQL數據庫),並且你還必須設置API和數據庫,對於一個簡單的實時應用程序來說,這似乎顯得有些多餘。

最後的思考

Firebase

  • 易於設置、使用和維護。
  • 需要你做的決定更少,非常適合簡單的應用程序。

AWS

  • 提供更大的靈活性,這對構建大型、複雜的應用程序有很大幫助,但對簡單的應用程序來說可能有些多餘。
  • 一個潛在的解決方案可以滿足你所有的應用程序需求。你可以構建一個整潔打包的解決方案,但是其可能成本更高。

我希望這能幫你做出正確決定,並在嘗試構建應用程序時提出更好的問題。

英文原文:

Should You Use AWS or Firebase For the Back end of Your Mobile App?