用于削减成本的Web应用(AWS)可能的无服务器系统架构是什么

时间:2018-07-02 06:31:04

标签: azure amazon-ec2 aws-lambda cloud serverless-framework

*发布的图像的道歉*

我正在为具有以下配置/设置的AWS托管的应用程序寻找潜在的成本削减措施。

  • EC2实例
  • 带有Web服务器,App服务器的Java动态Web应用程序
  • RDS-MySQL

该应用程序在一个月的1周内有95%的时间被使用,剩余的5%的时间分布在剩余的3周内。

为了节省成本以便不为EC2实例付费,我们正在寻求无服务器版本。

我的背景云/ AWS:

  • 除了基于EC2的我以前在任何基于云的系统中都没有专业的工作知识,在EC2中,我使用与上述类似的设置来管理Java Web应用程序。
  • 我只是在网上搜索并阅读许多网站/博客。

我根据在线阅读的材料准备了演示文稿。但我需要专家意见/确认演示文稿中的解决方案选项

  1. 可能实现
  2. 与EC2实现相比,实现起来不太复杂
  3. 与租用EC2实例相比,一般情况下可以节省金钱

演示幻灯片如下:


enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


我不限于AWS,但是由于当前应用程序托管在AWS上,因此希望使用同一平台。 但是,如果可以使用Azure或其他平台实现类似的实现,则我们是开放的。

我们正在寻找的只是削减成本。

我可能缺少为您提供一些重要信息来帮助我的建议。请让我知道您的需求,我会为您准备的。

谢谢。

致谢

1 个答案:

答案 0 :(得分:1)

这是我对这个广泛问题的看法,我的回答是面向AWS的,但是所有云供应商都提供类似的服务:

在大多数情况下,您可以绝对节省从Monolith到Serverless的巨额资金。

  • 您无需为空闲的计算时间付费,而只需为系统正在执行有价值的事情支付毫秒。
  • 您的服务每小时可以扩展到数百万个请求,而无需事先警告。
  • 无需维护服务器,负载平衡器或数据库实例。

移至无服务器确实意味着将您的应用重新架构为事件驱动。这可能是一个非常具有挑战性的范式转换,但是您不会回头。您可以选择从完全重写开始,或使用strangler pattern逐渐移动。

我建议对大多数无服务器系统使用以下AWS服务:

  • S3静态网站,用于托管单页应用程序(Angular,React,Vue)
  • API网关,坐在那里等待来自Web应用程序或API的传入HTTPS请求。还可以使用自定义授权者来控制访问。
  • Lambda,用于响应事件(从API网关,S3文件上传,数据更改)
  • DynamoDB,用于结构化数据存储(S3,用于二进制伪像)。
  • Step函数,用于编排更复杂的Lambda事件链。

根据您的特定用例,您还可以使用SNS,SES,Kinesis等。

The Serverless Framework非常适合以“基础结构即代码”样式的方式协调所有这些服务。大大简化了所有依赖项的部署。他们也有许多common architecture examples的示例。

无服务器功能的扩展非常平稳……但是,请注意不要强调那些没有关系的服务,例如关系数据库或第三方API。

如果您始终保持24/7的负载(高利用率的EC2)或运行长时间的处理批处理作业(在SQS上扩展EC2更合适),那么您将无法省钱。