我的移动应用程序需要一个后端服务器——我需要能够编写服务器端逻辑,这样我就不需要下载整个数据库。我正在为移动应用程序使用 JavaScript + HTML5。
Amazon EC2 或 Google App Engine 是否能够做到这一点?还有其他选择吗?
我的移动应用程序需要一个后端服务器——我需要能够编写服务器端逻辑,这样我就不需要下载整个数据库。我正在为移动应用程序使用 JavaScript + HTML5。
Amazon EC2 或 Google App Engine 是否能够做到这一点?还有其他选择吗?
全面披露: 我在 AppEngine 上为 Google 工作,但我试图保持公正。 我还应该(一如既往)指出,我给出的是我自己的意见,而不是公司的。
从理论上讲,您没有理由真正需要使用任何类型的后端服务提供商。您可以在任何地方连接具有静态 IP 地址和域名的服务器。实际上,没有人愿意自己处理所有这些事情的麻烦。
另一方面,您还有另一个问题要回答:消除麻烦的成本是多少?经验告诉我,成本通常是缺乏控制。为了尽可能减少麻烦,您必须避免人们做出选择。更少的选择意味着你的控制更少。
所以要回答的问题是:您需要多少控制权,以及您愿意处理多少麻烦?
如果您需要高级别的控制,并且愿意处理大量的麻烦,您可能需要“带有静态 IP 的盒子”选项。
AWS 减少了一些设置 boxen 的麻烦,但减少了您对运行软件的硬件的控制。这几乎肯定是您可以接受的,除非您有非常奇怪的硬件要求。
Google App Engine 消除了必须配置软件的麻烦,但减少了您对运行软件的软件堆栈的控制。您对软件有什么特殊要求吗?例如,您是否特别需要在某个版本的 Linux 上运行?您是否需要有特殊要求才能使用 Redis 而不仅仅是 memcache/database 组合?如果不是,那么这对您来说可能也是可以接受的。
大多数后端即服务提供商完全消除了编写后端的麻烦,但代价是消除了您对后端的控制。支持的身份验证方法对您来说是否足够好?后端是否允许您完全按照需要访问数据?如果是这样,这可能是您可以接受的。
现在,我的公正性到此结束。就个人而言,我觉得 App Engine 处于最佳状态。它为您提供了足够的控制权,而无需您管理应用程序的每个细节。如果您需要更多控制权,我建议您查看 AWS。如果您希望自动为您编写后端并且可以处理较少的控制,我建议您查看 BaaS。
伊桑,
StackMob 有一个免费的包,你可以试试。您可以使用 JS SDK 编写您的 HTML5 应用程序并将内容保存到 StackMob 服务器。同时,您可以通过将自定义代码片段(java/scala/clojure)上传到 StackMob 来编写后端服务器端逻辑。它的设计目的是让这段代码自动成为一个 REST API,这样你就可以从任何地方点击它来执行逻辑服务器端并获得 JSON 作为回报。您可以免费在 StackMob 上托管您的 HTML5,也可以将您自己的域指向它。
Erick - StackMob 工程师
关于明确命名的两个提供者 (+1),Daan 的回答是正确的。
如果您想省去一些麻烦和/或在此过程中获得一些指导,您可能需要查看专门针对移动应用后端细分市场的专用平台即服务 (PaaS)提供商之一。与此同时,可能还有十几个,但从我的脑海中,我现在记得这三个(都是商业的,但通常是某种免费层来让你开始和/或永远甚至用于开发目的) - 没有具体顺序:
您将通过这种方法获得的主要好处是处理平台而不是基础设施本身,它抽象出许多(如果不是全部)需要专门系统管理技能的主题(在团队中拥有这些知识通常不会有什么坏处)无论如何,请参阅DevOps)。
要注意的主要缺点是最终避免供应商锁定,即根据您的需要,您可能希望能够将您的应用程序后端迁移到另一个提供商,如果可能的话,这目前并不总是那么简单。另一方面,如果您只是想快速入门和/或开发原型,这可能不是您现在关心的问题。
其中大多数将使用一些基础设施即服务 (IaaS)提供商,如AWS或Joyent作为他们的后端,顺便说一句。
祝你好运!
Steffan 的回答触及了核心要点,使用后端即服务 (BaaS) 平台还有一些额外的好处,而不仅仅是为您处理基础设施/DevOps 方面的事情。(全面披露:我是后端即服务提供商Kinvey的工程师)。
其中许多服务提供 RESTful API 来直接访问您的数据。与其花时间自己动手(并再次重新发明轮子),您通常会得到自己的数据 API 并准备就绪。
BaaS 提供商通常会提供代码库来简化与您的 API 的连接。
它通常不仅仅是应用程序数据。例如,在 Kinvey,我们也提供大文件 (blob) 存储。如果您有任何图像、视频等,您可以零设置存储它们。
一些提供商还提供有关您的 API 使用情况的分析——您不需要重新发明的另一个轮子
与其他供应商合作:例如,Kinvey 通过 Urban Airship 提供推送通知
总之,看看 BaaS 看看它是否能满足您的需求可能是有意义的。
Amazon Web Services (AWS) 和 Google App Engine (GAE) 最初都可以免费使用,AWS 通过AWS 免费套餐和 GAE 默认情况下简单地使用。无论您的后端服务是什么,只要像在云提供商上一样保持它尽可能轻巧,您的计算量越大,成本就越高(或者越快越过免费使用限制)。我也会考虑 RackSpace 云 (RS)。在这里,RS 将他们的服务与 AWS 进行了比较。
一个重要的区别。在 AWS 和 RS 中,您可以控制您的实例,因为您“拥有”(付费)并控制一个完整的实例。另一方面,GAE 是一个云应用平台,因此,与Heroku一样,您必须编写代码才能使用这样的应用平台。云应用平台有几个优点和缺点。
例如,作为 GAE 的一项优势,您可以免费获得大部分DevOps。例如,在 GAE 中更新您的应用程序非常容易,而在 AWS 上您必须编写自己的部署脚本。另一方面(作为我遇到的一个问题),在 GAE 上,您不能在同一实例上拥有自己的数据库服务器,因为您没有完全控制权;您将不得不寻求专有解决方案,例如 Google Cloud SQL或 GAE 的High Replication Datastore。
如果您正在寻找一个完全开源的解决方案后端,我建议您部署在 Amazon EC2 或Deployd.com服务或任何其他 node.js 提供商上。还有DeploydKit或RestKit作为与它一起使用的原生 iOS 客户端库。
没有 Adobe EC2 这样的东西,除非您指的是可以在 EC2 上设置的 Adobe 媒体服务器。但我假设您只是指 Amazon Web Services EC2 云计算服务。在这种情况下:是的,您可以在 EC2(以及 Google App Engine)上为您的移动应用程序运行后端服务器。您所要做的就是编写一个 Web 服务来接受来自您的移动应用程序的请求,查询数据库并应用您需要它应用的任何逻辑,然后将数据发送回您的移动应用程序。但听起来您可能想先阅读 Web 服务和云计算,否则这将是一项相当艰巨的任务 :)
不过,如果您不希望有太多用户,那么简单地将 PHP 脚本或其他东西放在与您的网络托管服务提供商的“传统”共享服务器上可能比为您的应用程序运行专用 EC2 实例更有价值。
正如 Steffen 和 Dave 所说,后端即服务提供商之一可能就在您身边。大多数(如果不是全部)这些平台都具有相当强大的查询系统,因此您不必担心从数据库中筛选无关信息。我认为 Parse 专门介绍了一个用例,就像你提到的关于从数据库中仅提取 x 个最高分的用例。
如果您绝对需要服务器端代码,StackMob 允许自定义代码托管,我相信 Kinvey 也处于测试阶段。我认为 StackMob 只支持 Java 和 Clojure 的服务器代码,如果这很重要的话。
灵活性和易用性之间总是需要权衡取舍,但取决于您需要对数据进行多少控制,这些服务可以为您节省大量时间,而不会真正降低应用程序的功能。