我开发原生Android应用程序有很长一段时间,最近开始用Flutter开发移动应用程序,并同时使用Firebase和AWS作为后端服务。但最近,我不得不为一个移动应用程序找到一个解决方案,这花费我很多时间来选择合适的后端服务。
那App的后端服务,你是选择AWS还是Firebase。当然,并不是说AWS就比Firebase好,或Firebase比AWS好。正确的问题应该是:哪种解决方案最适合我的需求?
在此,我分享自己的观点和理解,或许能帮你选择正确服务。
核心功能有:
这些功能,它们都有。因此,你可以用这些平台轻松部署无服务器解决方案。
集成这些服务最普遍的方法是使用它们的SDK,但是这符合你的需求吗?
Firebase为Android、iOS和Web提供SDK,因此,作为前端开发人员,你可以轻松构建数据驱动的应用程序,而不必受制于后端技能。
Firebase还有一个REST API,你能用它构建自己的自定义API(根据需求)。
AWS为移动开发提供一种非常好的解决方案AppSync,你可以把它集成到你的Android、iOS和React Native中。
AWS AppSync还未提供对Flutter的官方支持,不过,你可以看下这里。
如果你想使用Flutter开发前端,就必须创建自己的API。
Firebase和AWS各有优势,哪个更适合你。
1. 设置不同环境
在AWS中,用于开发、测试和生产的不同环境更加“优雅”。
当然,你也能在Firebase中这样做,但必须建立不同项目,而这需要更多时间。
2. 持续部署
如果你用过Netlify之类的服务,那么AWS为持续部署提供另一种优雅的解决方案。同样,你也可以使用谷歌云来实现CD,但它需要更多配置。
3.GraphQL
面向移动应用程序的AWS Amplify SDK与GraphQL和Apollo紧密集成。
4. 选择数据库
在后端用哪种类型的数据库,完全由你控制,而Firebase只提供NoSQL数据库。
5. 单包解决方案
AWS提供应用程序可能需要的所有服务。因此,AWS是一个云解决方案,你可以完全依赖它来满足所有需求。
如果整个后端都在一个地方,这会更容易理解和维护。
1. 专用数据库
Firebase提供两种专用数据库服务:Cloud Firestore和Realtime Database。这两个数据库都是NoSQL数据库,因此,你在部署数据驱动的应用程序时不必太操心数据库设置和查询编写。
只要你的需求和要求比较简单,并且知道它未来不会变得更复杂,那么你就可以使用NoSQL数据库。
2. 可调用的函数
得益于Firebase云函数,你可以创建云函数并通过URL设置触发器,以便将侦听器写入数据库。
这些函数类似于AWS Lambda,但是从应用程序触发一个Lambda需要你设置一个API网关并添加授权逻辑,这使得实现起来有些困难。
3.质量控制服务
Firebase提供很多服务来监控和保证应用程序的质量。这些服务包括:
这两个平台的价格都很有吸引力,甚至还有一个免费档,所以你无需为任何东西付费,除非你有相当数量的活跃用户。
AWS掌握其服务的定价,他们以便宜得多的价格提供许多很棒的服务。随着时间推移,他们实际上能将服务价格降低80%以上。
这就是为什么,你会发现AWS比GCP更便宜。对于构建实时应用程序,AWS提供了相对昂贵的DynamoDB。
对于云函数,AWS提供的服务价格是Firebase的一半。
虽然AWS的某些服务更便宜,但Firebase提供一些完全免费的服务,比如:
对于构建实时应用程序,与AWS相比,Firebase的设置成本似乎要低得多,也更容易。Firebase负责数据的实时同步,你无需过多操心。
随着用户数量的增加,Firebase显然是构建实时应用程序的更好选择。但是如果不小心优化你的查询,Firebase会给你寄来一张3万美元的账单。
顺便说一句,谷歌在了解发生的事情后,已经放弃一些应用场景。有些东西比平台定价更贵……
这是一个需要考虑的重要因素,因为你将需要这些资源来设置、构建和维护应用程序架构。
Firebase非常简单,容易上手。实际上,前端开发人员可以创建和维护整个后端,只需要一点设置方面的知识。
对于创建实时应用程序,Firebase处理了大量的复杂性,并为你提供一个非常强大且易于使用的SDK,帮你节省大量时间,而时间就是金钱。
因为AWS提供的服务是Firebase的十倍,所以它的使用和维护也要复杂十倍。我想说的是,与Firebase相比,AWS有一点学习曲线。
对于创建实时应用程序,你需要搭配使用GraphQL API和DynamoDB实例(同样是一个NoSQL数据库),并且你还必须设置API和数据库,对于一个简单的实时应用程序来说,这似乎显得有些多余。
我希望这能帮你做出正确决定,并在尝试构建应用程序时提出更好的问题。
英文原文:
Should You Use AWS or Firebase For the Back end of Your Mobile App?
领取专属 10元无门槛券
私享最新 技术干货