【问题标题】:I need feedback on this partly serverless architecture design我需要有关这种部分无服务器架构设计的反馈
【发布时间】:2016-12-09 23:34:50
【问题描述】:

我想利用 AWS 技术在 AWS 上的 nodeJS 中托管一个可扩展的博客或此类应用程序。这里的想法是拥有一个小型 EC2 服务器,它不负责为网站提供服务,而只负责运行 CMS/管理面板。虽然这些操作也可以是无服务器的,但我认为拥有一个专用的小型 VM EC2 实例可能会更高效,并且可以更好地与现有框架等配合使用。

在我上面的图表中,您可以看到audiences 和admin/writers 两种类型的用户。管理员 CRUD 操作也会导致 lambda 运行。 Lambda 在 Admin 更改后生成静态站点,并将其传送到 S3。用户被定向到托管在 S3 中的静态站点。只有管​​理员/作者可以访问网站的服务器连接部分。

我认为对于一个可扩展性极强且相对便宜的网站来说,这是一个很好的设计,只要面向用户的一面都是静态的。对此的替代方案是 CDN,但随后我必须处理缓存失效问题、更新速度较慢的站点以及更大的服务器。

这对我来说似乎是双赢的。反馈?

【问题讨论】:

  • 这个设计没有错。您基本上是在构建一个在 EC2 上运行的静态站点管理员,以及一个在 Lambda 上运行的静态站点生成器。您也可以在 EC2 上运行整个程序。您是从头开始构建这一切,还是使用现有的静态站点工具?您可能想查看在 Lambda 上运行的现有静态站点生成器,如下所示:github.com/ryansb/hugo-lambda
  • 正如 Mark B 所说,您实际上是在构建一个简单的静态站点,该站点恰好允许进行一些自定义,但不支持任何后端逻辑。只要您关心的只是一些主要是静态内容的页面,那么设计就可以了。
  • 您的网站内容多久更新一次?
  • @MarkB 感谢您推荐 hugo-lambda,非常有帮助。我也在考虑使用静态站点生成器。我可以把它放在 EC2 上。我不确定该网站会有多大。我认为如果网站变大,我应该把它放在 lambda 上,让 lambda 完成繁重的工作和扩展。
  • mike 是的,网站的观众不会触及后端逻辑。只是带有图片和视频的静态页面。 @harshal 我还不知道具体多少,但我认为每天不超过 1000 个。

标签: amazon-web-services amazon-s3 amazon-ec2 aws-lambda static-generator


【解决方案1】:

这应该是评论而不是答案,但是因为我没有足够的积分......

此架构还有其他几个注意事项。 Lambda 函数非常适合水平扩展微服务,每个小函数并行执行数十或数百次。静态站点的生成通常是单线程操作,因此您可能看不到预期的收益,您还需要观察超时时间(目前最多 300 秒)并确保您可以在该时间内生成站点。当然,如果您不运行 Lambda 代码,您不会被收费。

对于您的管理前端,我建议您使用 ElasticBeanstalk,即使您将它固定在单个实例上,它也可以为您提供许多很棒的功能,例如滚动更新。

祝项目顺利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2016-06-29
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多