App后端服务,你是选择AWS还是Firebase?

我开发原生Android应用程序有很长一段时间,最近开始用Flutter开发移动应用程序,并同时使用Firebase和AWS作为后端服务。但最近,我不得不为一个移动应用程序找到一个解决方案,这花费我很多时间来选择合适的后端服务。

那App的后端服务,你是选择AWS还是Firebase。当然,并不是说AWS就比Firebase好,或Firebase比AWS好。正确的问题应该是:哪种解决方案最适合我的需求?

在此,我分享自己的观点和理解,或许能帮你选择正确服务。

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:在应用程序的前端或后端为你的解决方案添加机器学习功能。

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?

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/OMW3mldLvUNDH3ZAlu2o
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券