【问题标题】:Which AWS services for mobile app backend?哪些 AWS 服务适用于移动应用程序后端?
【发布时间】:2018-01-13 05:53:49
【问题描述】:

我正在尝试找出我正在与我的初创公司合作开发的移动应用程序需要哪些 AWS 服务。我们正在开发的应用程序应该会在今年晚些时候进入 app-/play-store,因此我们需要针对我们的案例的“最佳实践”解决方案。它必须是高度可扩展的,因此如果服务器有数千个请求,它应该保持稳定和快速。我们也可能想在上面部署一个网站。

实际上,我们正在使用 Uberspace (link) 服务器,并在其上运行 Node.js 应用程序和 MongoDB。一切正常,但对于我们希望与 AWS 一起发布的版本。我们需要的是可以运行 Node.js / MongoDB(或类似于 MongoDB)的东西,以及可以存储用户请求的个人资料图片等图像的东西。

我已经在他们的网站上阅读了一些关于 AWS 的信息,但这并没有太大帮助。有这么多服务,我们不知道其中哪些完全符合我们的需求。

一位朋友告诉我只使用 AWS EC2 作为 Node.js 服务器 + MongoDB 和 S3 来存储图像,但在一些网站上我读到使用这种架构更好:

如果有人可以与我们分享他/她的知识,我们会很高兴!

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2


    【解决方案1】:
    • 运行代码:你可以使用 lambda,但要小心:你的好处 不必担心服务器,有时缺点是 lambda 慢得不合理。如果您真的需要它,那么您需要在 EC2 上使用它 具有自动缩放功能。如果你调整得当,它就像一个魅力。
    • 存储数据:DynamoDB 如果您希望它非常快(个位数 毫秒,无论负载和数据库大小如何)并根据最佳 实践。它需要适当的模式或将花费你一大笔钱, 否则在 EC2 上使用 MongoDB。
    • 如果您需要 RDBMS,则需要 RDS(好处: 可扩展性、可用性、无需维护)
    • 缓存:它们同时具有 Redis 和 memcached。
    • S3:存储静态资产。
    • 我不建议使用 CloudFront,市场上有另一个 CDN 更好 价格/可能性。
    • API 网关:是的,如果您有 API。
    • 根据您的应用程序,您可能需要 SQS。
    • 如果您想在使用 google/fb/etc 时对用户进行身份验证,Cognito 是一项很好的服务。
    • CloudWatch:如果您对指标上瘾,那么它不适合您,也许是独立的 EC2 会更好。但是,对于大多数人来说,CloudWatch 绝对没问题。
    • 创建所有必要的警报(CPU 过载等)。
    • 您应该使用角色 允许从 lambda/AWS 访问您的 S3/DB。
    • 您不应使用 root 帐户,而应创建一个单独的用户。
    • 创建计费警报:您会知道是否要超出预算。
    • 创建 lambda 函数来备份您的 EBS 卷(以及您可能需要备份的任何其他内容)。如果备份在一秒钟后开始没有问题,所以 Lambda 在这里没问题。
    • 不时运行 Trusted Adviser。
    • 您最好使用 CloudFormation 堆栈进行设置:如果/需要时,您将能够在另一个区域轻松部署相同的基础架构,而且管理基础架构相对更容易代码比手动构建时要好。

    【讨论】:

    • 感谢您的详细解答!我会尽可能听从你的建议。
    【解决方案2】:

    如果您想要一个高度可扩展的应用程序,您可能需要使用带有 AWS lambda 的无服务器架构。 有一个称为无服务器的框架,可帮助您管理和组织所有 lambda 函数并将它们放在 AWS Gateway 后面。 对于存储,您可以使用 AWS EC2 并安装 MongoDB,或者您可以使用 AWS DynamODB 作为您的 NoSql 存储。 如果你想要一个前端,包括 Web 和移动端,你可能想要访问 react native 方法。

    希望我对您有所帮助。

    【讨论】:

    • 感谢您的回答!我看到 EC2 也具有很高的可扩展性,那么在我们的案例中,与 EC2 相比,使用 AWS Lambda/Gateway 有什么好处?既然有 S3,为什么还要用 EC2 做存储呢?
    • 在 EC2 中,您必须让 ypur 服务器始终运行,并且您需要为启动服务器的所有时间付费。使用 lambda 时,没有服务器在运行(至少开发人员看不到和管理它),所以只有在 lambda 激活时才向您收费,所以它便宜得多。此外,对于 EC2,您必须有一个负载均衡器并担心它并对其进行配置,相比之下,lambda 会自动扩展。我向您推荐 AWS lambda in action book。
    • S3 是用于存储照片、文件等长期和静态数据的存储设备,但不适用于更改和动态数据,并且绝对不是应用程序数据的存储设备。
    • 谢谢!我将阅读更多关于 AWS Lambda 的内容,但我们需要的图像存储应该是长期的。我们想为我们的应用程序中的一些动态内容提供图像,因此需要永久存储图像。使用 EC2 而不是 S3 会更好吗?
    • 您可以两者兼得,因为每个都有自己的用途。在 S3 中,您将存储图像等静态数据,但所有将更新或删除的动态数据(例如用户信息、图像元数据和其他应用程序数据)都必须存储在数据库、SQL 或 NoSQL 中,在这种情况下,您已经选择了 MongoDB。
    猜你喜欢
    • 2017-12-04
    • 2014-08-13
    • 2012-03-07
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2017-01-23
    相关资源
    最近更新 更多