2017-08-05 62 views
0

我想弄清楚我正在使用我的启动的移动应用程序需要什么AWS服务。我们正在研究的应用程序应在今年晚些时候进入应用程序/ Play商店,因此我们需要针对我们的案例采用“最佳实践”解决方案。它必须是高度可扩展的,所以如果有数以千计的服务器请求,它应该保持稳定和快速。我们也可能想在其上部署一个网站。哪些适用于移动应用程序后端的AWS服务?

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

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

一个朋友告诉我只使用AWS EC2为Node.js的服务器+的MongoDB和S3存储图像,但在一些网站上我已阅读,它是更好地使用这种架构:

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

回答

1
  • 运行代码:你可以使用拉姆达,但要小心:你 没有好处不用担心服务器,缺点是有时拉姆达不合理 缓慢。如果您需要的速度非常快,那么您需要使用EC2 并进行自动缩放。如果你调好它,它就像一个魅力。
  • 要存储数据:DynamoDB,如果您希望它真的很快(单个数字 毫秒,无论负载和数据库大小),并根据最佳 实践。它需要适当的模式,否则将花费您的财富,否则在EC2上使用MongoDB。
  • 如果您需要RDBMS然后RDS(好处: 的可扩展性,可用性,维修无头痛)
  • 缓存:他们有两个Redis的和分布式缓存。
  • S3:存储静态资产。
  • 我不建议CloudFront,市场上还有另一个CDN,价格/可能性更好。
  • API网关:是的,如果你有一个API。
  • 根据您的应用程序,您可能需要SQS。
  • Cognito是一个很好的服务,如果你想使用谷歌/ FB /等认证你的用户。
  • CloudWatch:如果你是公制瘾君子,那么它不适合你,也许独立EC2 会更好。但是,对于大多数人来说,CloudWatch是非常好的。
  • 创建所有必要的警报(CPU过载等)。
  • 您应该使用角色 来允许从lambda/AWS访问您的S3/DB。
  • 您不应使用root帐户,而应创建一个单独的用户。
  • 创建结算警报:你会知道你是否打算预算。
  • 创建lambda函数来备份您的EBS卷(以及任何您可能需要备份的内容)。如果备份一秒钟后启动就没有问题,所以 Lambda在这里可以。
  • 现在运行可信顾问。
  • 最好使用CloudFormation堆栈进行设置:如果需要,您可以轻松地在另一个区域部署相同的基础架构,同时管理Infrastructure-as-a-代码比手动构建时要好。
+0

感谢您的详细解答!我会尽可能地遵循你的建议。 –

2

如果您想要一个非常高的可伸缩应用程序,您可能需要使用AWS lambda的无服务器体系结构。 有一个名为serverless的框架,可以帮助您管理和组织您的所有lambda函数,并将它们放在AWS Gateway之后。 对于存储,您可以使用AWS EC2并安装MongoDB,也可以使用AWS DynamODB作为NoSql存储。 如果你想要一个网页和手机前端,你可能想要访问原生反应方法。

我希望我一直有帮助。

+0

谢谢您的回答!我看到EC2也是高度可扩展的,那么在我们的案例中,使用AWS Lambda/Gateway与EC2相比有什么优势?当有S3时,为什么我们应该使用EC2进行存储? –

+0

在EC2中,您必须始终运行ypur服务器,并且您始终支付服务器的所有时间。使用lambda时,没有服务器正在运行(至少开发人员不会看到并管理它),因此只有在激活lambda时才会收取费用,因此它便宜得多。此外,在EC2中,您必须拥有一个负载均衡器,并担心并配置它,相反,则会自动进行lambda升级。我建议你在操作手册中使用AWS lambda。 – ainsausti

+0

S3是一种存储长期和静态数据的照片,文件等,但不适用于更改和动态数据,也不适用于应用程序数据存储。 – ainsausti

相关问题