我们正在研究项目,我们正在努力在Node.js中构建无服务器应用程序。我谈到了AWS SAM和Serverless。哪种方法最适合实现无服务器应用程序
答案 0 :(得分:5)
您可以将本文与SAM and Serverless进行比较
该页面上列出的主要区别如下
无服务器框架是一个易于编写的框架 适用于众多提供商(包括AWS)的事件驱动功能 Google Cloud,Kubeless等。对于每个提供商,一系列事件 可以配置为调用该函数。该框架是开放的 来源并定期接收更新。
AWS无服务器应用程序模型(SAM)是 CloudFormation的前端,可轻松编写无服务器 AWS中的应用程序。支持三种不同的资源 类型:Lambda,DynamoDB和API网关。使用SAM Local,Lambda和 API网关可以通过使用Docker容器在本地运行。
这两个框架的共同点是它们生成CloudFormation。在 换句话说:它们都抽象了CloudFormation,因此您需要 编写更少的代码来构建无服务器应用程序(对于SAM) 并部署Lambda函数(适用于SAM和无服务器)。的 最大的不同是Serverless是为部署FaaS而编写的 (功能即服务)对不同的提供程序起作用。 SAM上 另一方面是专门用于AWS的抽象层 FaaS以及DynamoDB用于存储,API网关用于创建 无服务器HTTP端点。
另一个区别是SAM Local允许您运行Lambda 在本地运行,并在本地启动API网关。这使它 更容易开发和测试Lambda函数,而无需将其部署到 AWS。使用无服务器框架,您还可以调用Lambda 命令行中的所有功能,但前提是它们已部署到AWS 并可以通过API网关使用。
答案 1 :(得分:3)
SAM和SF之间的最大区别:
1)SAM仅适用于AWS; SF支持多个后端,因此它支持多/混合云应用程序的部署。 SF还支持kubernetes后端。
2)对于AWS,SAM和SF模板都可以编译为Cloudformation(CF)。 SAM可以使用本质上是CF宏的Transform。
3)SAM用Python编写; SF用Java语言编写。
4)SF具有允许您运行任何代码(包括非Javascript)的插件;这实际上意味着有可能超越Cloudformation(CF)的局限性,因为始终有CF尚不支持的某些东西(新事物)。插件系统也非常灵活,非常有用。
5)SF变量系统更加灵活,它允许您基于其他参数(例如阶段)的存在进行动态包含; SAM变量更接近CF。