Google App Engine 与 Firebase
Google App Engine vs Firebase
我正在考虑选择哪个选项。 (或另一个,如果它更好)
这适用于消息类型的应用程序,其中会有大量通知和数据库写入。
选项 1 - Google App Engine 使用 Cloud Endpoints 和 Cloud Datastore
优点:
- 能够按照我喜欢的方式构建 API。
- 可扩展
缺点:
- 实施通知系统的更多工作。 (最终将成为 Firebase 云消息传递)
选项 2 - Firebase
优点:
- 能够使用 Firebase 数据库、Firebase 用户身份验证、Firebase 云消息传递(通知)
- 所有设备的详细使用统计数据
缺点:
- 没有API
选项 3 - 是否可以结合使用 Google Cloud Endpoints 和 Firebase?
首先请查看 Google 文档中的图表 here,以便对它们提供的不同移动应用程序后端服务进行很好的比较和对比。这是图表(注意:图表不再出现在他们的网站上 link):
个人观点(已更新):
选项 1 - Google App Engine 使用 Cloud Endpoints 和 Cloud Datastore
优点:
- 您将学习更多关于编写您自己的 restful 模式的 API。您还将被迫学习如何拨打 restful api 电话(使用 iOS 或 Android),这是业内非常宝贵的技能。 Firebase 可以为您做所有事情,您永远学不会这些东西。
- 您必须自己编写,但是您可以通过 API 方法和 Google 云消息传递以及您创建的方法类型来真正发挥创意。他们真的可以做任何事情,也可以连接到任何数据库(例如 MySQL、SQL 服务器、数据存储)。在 Firebase 中,您必须使用他们基于 json 的数据库。我不建议为应用程序使用 SQL 数据库,但不同的人有不同的需求。
缺点:
- 这需要更多的工作,一开始可能很难全神贯注于数据存储。它不像SQL.
这样的关系型数据库
- 此外,我觉得在某些方面,您可以通过创建非常低效的方法和查询来“搬起石头砸自己的脚”,因此需要很长时间 运行。
- 让新应用程序恼火的一件事是 GAE 中的自动缩放。长话短说,如果在大约 15 分钟内没有人点击您的 API,那么所有实例都会关闭。进行新调用后,需要花费大量时间来备份实例并执行 API 方法。这对于新应用程序来说可能很烦人,因为新用户可能会认为该应用程序有问题,因此可能会停止使用它。您可以进行手动缩放,但是要一直运行实例会花费很多钱(截至撰写本文时,我的付费应用程序每月大约需要 27 美元)。有关此问题的更多信息以及我想出的 solution,请参阅此处的 post。
选项 2 - Firebase
优点:
- 它易于初学者使用,并且 Firebase 上有充足的 tutorials/courses 来执行您想要执行的那些流行的事情,例如发送推送通知和同步数据。
- 与 GAE 不同,它开箱即用。没有启动实例。这非常适合希望通过快速数据获取给用户留下深刻印象的新应用。
- 您可以绕过学习适配器 (Android) 和网络(在移动应用程序中)等复杂事物的本质,并且只依赖 Firebase 类。也许它对新手更友好一点?同样,文档很棒而且开箱即用,我认为编写低效查询而搬起石头砸自己脚的机会更少。
缺点:
- Firebase 对客户端代码的要求很高。如果你想要一个 Android 和一个 iOS 应用程序,你必须为两者编写大量客户端代码。在 GAE 中,很多逻辑在 GAE 应用程序中被抽象掉了。但如果您真的不想在您的应用程序中使用数据库管理员并且只有 iOS + Android 了解 Firebase 的开发人员,这可能是一个优势。但对我来说,这是一个很大的关闭。
- 如果 Firebase 走 Parse.com 的路怎么办...Facebook 宣布他们将不再支持它。那真的很糟糕!您将被锁定在 Firebase 中,并且没有开发任何关于如何制作 restful API 的编程知识。然而,由于 Google 对 Firebase 的大量投资,现在将 GCM 升级到 Firebase 云消息传递,很明显他们对 Firebase 有很大的计划,而且不会有任何进展。所以我不认为这算作“骗局”,但请记住这一点?
在 link 中阅读更多内容,了解如何组合它们。
我很困惑,许多关于 Firebase 的讨论(包括上面的问题和答案)都没有提到对我来说非常重要的区别:价格。
这是Firebase price时间表。
比较这些可能很棘手,但我的解释是 Firebase 非常昂贵。
这应该不足为奇。 GAE和datastore不得不与亚马逊、微软等同类服务竞争,竞争非常激烈。是的,这些服务当然不像基础设施和 SQL 那样通用,但它们似乎足够接近以至于价格仍然具有竞争力。
另一方面,Firebase 是一项与其他后端服务(如 Parse)竞争的高级服务,一旦您决定使用它,我认为将很难切换。 Google 如此努力地推动 Firebase 应该不足为奇 - 他们可能会从中赚到很多钱,因为他们可以以如此高的价格为其定价。
在我看来,这样做的结果是 Firebase 是低容量和高利润服务的不错选择,但如果您打算创建一个典型的、以消费者为导向、广告支持的服务,这将依赖于大容量赚钱,那么 Firebase 的成本可能会扼杀你的利润。
2017-10 加法:
我通过最近发布的 Firestore 再次关注了 Firebase。
我认为了解另一个问题很重要:将 Firestore 用于 Android 应用程序意味着使用严重依赖于 Google Play 服务的 Firebase 客户端库,这意味着您可以部署到非 Google 设备,包括 Amazon Fire 平板电脑和(我相信)整个中国市场。
我最近在努力寻找解决方案时了解到的一件事是 firebase 不提供任何解决设备到设备通知的方法;虽然它确实提供服务器到设备的推送通知,而且设置起来非常容易。但前者缺乏功能非常重要,有一种阴谋论认为这是因为他们试图推动您也使用其他 google 产品。
或者,也许是因为它最初没有开发,所以他们保持不变。我认为 App Engine 是一种为此目的连接 firebase 和设备的方法,因此我倾向于结合 firebase 和其他 google 产品,在这种情况下 app engine. If you plan to do more back end processing such as image processing, etc, then you are looking at app engine and compute engine 肯定可以集成与 Firebase 一起产生了一个假设强大的后端解决方案。
我正在考虑选择哪个选项。 (或另一个,如果它更好) 这适用于消息类型的应用程序,其中会有大量通知和数据库写入。
选项 1 - Google App Engine 使用 Cloud Endpoints 和 Cloud Datastore
优点:
- 能够按照我喜欢的方式构建 API。
- 可扩展
缺点:
- 实施通知系统的更多工作。 (最终将成为 Firebase 云消息传递)
选项 2 - Firebase
优点:
- 能够使用 Firebase 数据库、Firebase 用户身份验证、Firebase 云消息传递(通知)
- 所有设备的详细使用统计数据
缺点:
- 没有API
选项 3 - 是否可以结合使用 Google Cloud Endpoints 和 Firebase?
首先请查看 Google 文档中的图表 here,以便对它们提供的不同移动应用程序后端服务进行很好的比较和对比。这是图表(注意:图表不再出现在他们的网站上 link):
个人观点(已更新):
选项 1 - Google App Engine 使用 Cloud Endpoints 和 Cloud Datastore
优点:
- 您将学习更多关于编写您自己的 restful 模式的 API。您还将被迫学习如何拨打 restful api 电话(使用 iOS 或 Android),这是业内非常宝贵的技能。 Firebase 可以为您做所有事情,您永远学不会这些东西。
- 您必须自己编写,但是您可以通过 API 方法和 Google 云消息传递以及您创建的方法类型来真正发挥创意。他们真的可以做任何事情,也可以连接到任何数据库(例如 MySQL、SQL 服务器、数据存储)。在 Firebase 中,您必须使用他们基于 json 的数据库。我不建议为应用程序使用 SQL 数据库,但不同的人有不同的需求。
缺点:
- 这需要更多的工作,一开始可能很难全神贯注于数据存储。它不像SQL. 这样的关系型数据库
- 此外,我觉得在某些方面,您可以通过创建非常低效的方法和查询来“搬起石头砸自己的脚”,因此需要很长时间 运行。
- 让新应用程序恼火的一件事是 GAE 中的自动缩放。长话短说,如果在大约 15 分钟内没有人点击您的 API,那么所有实例都会关闭。进行新调用后,需要花费大量时间来备份实例并执行 API 方法。这对于新应用程序来说可能很烦人,因为新用户可能会认为该应用程序有问题,因此可能会停止使用它。您可以进行手动缩放,但是要一直运行实例会花费很多钱(截至撰写本文时,我的付费应用程序每月大约需要 27 美元)。有关此问题的更多信息以及我想出的 solution,请参阅此处的 post。
选项 2 - Firebase
优点:
- 它易于初学者使用,并且 Firebase 上有充足的 tutorials/courses 来执行您想要执行的那些流行的事情,例如发送推送通知和同步数据。
- 与 GAE 不同,它开箱即用。没有启动实例。这非常适合希望通过快速数据获取给用户留下深刻印象的新应用。
- 您可以绕过学习适配器 (Android) 和网络(在移动应用程序中)等复杂事物的本质,并且只依赖 Firebase 类。也许它对新手更友好一点?同样,文档很棒而且开箱即用,我认为编写低效查询而搬起石头砸自己脚的机会更少。
缺点:
- Firebase 对客户端代码的要求很高。如果你想要一个 Android 和一个 iOS 应用程序,你必须为两者编写大量客户端代码。在 GAE 中,很多逻辑在 GAE 应用程序中被抽象掉了。但如果您真的不想在您的应用程序中使用数据库管理员并且只有 iOS + Android 了解 Firebase 的开发人员,这可能是一个优势。但对我来说,这是一个很大的关闭。
- 如果 Firebase 走 Parse.com 的路怎么办...Facebook 宣布他们将不再支持它。那真的很糟糕!您将被锁定在 Firebase 中,并且没有开发任何关于如何制作 restful API 的编程知识。然而,由于 Google 对 Firebase 的大量投资,现在将 GCM 升级到 Firebase 云消息传递,很明显他们对 Firebase 有很大的计划,而且不会有任何进展。所以我不认为这算作“骗局”,但请记住这一点?
在 link 中阅读更多内容,了解如何组合它们。
我很困惑,许多关于 Firebase 的讨论(包括上面的问题和答案)都没有提到对我来说非常重要的区别:价格。
这是Firebase price时间表。
比较这些可能很棘手,但我的解释是 Firebase 非常昂贵。
这应该不足为奇。 GAE和datastore不得不与亚马逊、微软等同类服务竞争,竞争非常激烈。是的,这些服务当然不像基础设施和 SQL 那样通用,但它们似乎足够接近以至于价格仍然具有竞争力。
另一方面,Firebase 是一项与其他后端服务(如 Parse)竞争的高级服务,一旦您决定使用它,我认为将很难切换。 Google 如此努力地推动 Firebase 应该不足为奇 - 他们可能会从中赚到很多钱,因为他们可以以如此高的价格为其定价。
在我看来,这样做的结果是 Firebase 是低容量和高利润服务的不错选择,但如果您打算创建一个典型的、以消费者为导向、广告支持的服务,这将依赖于大容量赚钱,那么 Firebase 的成本可能会扼杀你的利润。
2017-10 加法:
我通过最近发布的 Firestore 再次关注了 Firebase。
我认为了解另一个问题很重要:将 Firestore 用于 Android 应用程序意味着使用严重依赖于 Google Play 服务的 Firebase 客户端库,这意味着您可以部署到非 Google 设备,包括 Amazon Fire 平板电脑和(我相信)整个中国市场。
我最近在努力寻找解决方案时了解到的一件事是 firebase 不提供任何解决设备到设备通知的方法;虽然它确实提供服务器到设备的推送通知,而且设置起来非常容易。但前者缺乏功能非常重要,有一种阴谋论认为这是因为他们试图推动您也使用其他 google 产品。
或者,也许是因为它最初没有开发,所以他们保持不变。我认为 App Engine 是一种为此目的连接 firebase 和设备的方法,因此我倾向于结合 firebase 和其他 google 产品,在这种情况下 app engine. If you plan to do more back end processing such as image processing, etc, then you are looking at app engine and compute engine 肯定可以集成与 Firebase 一起产生了一个假设强大的后端解决方案。