【发布时间】:2018-05-08 20:26:09
【问题描述】:
我想知道 Terraform 和 Serverless 有什么区别。他们不是在做同样的事情,比如管理您的基础架构,以及将您的基础架构表示为代码吗?
您真的需要无服务器框架 (serverless.com) 吗?
谢谢
【问题讨论】:
标签: terraform serverless-framework serverless
我想知道 Terraform 和 Serverless 有什么区别。他们不是在做同样的事情,比如管理您的基础架构,以及将您的基础架构表示为代码吗?
您真的需要无服务器框架 (serverless.com) 吗?
谢谢
【问题讨论】:
标签: terraform serverless-framework serverless
最明显的区别是无服务架构专注于功能即服务,而 terraform 旨在管理基础设施,包括您的 EC2 和 ECS 实例。Serveless.com 可能更适合 AWS Lambda 部署(它在其他云),但它无法管理您的虚拟机、负载平衡器和所有其他。
【讨论】:
我对无服务器框架和其他类似无服务器工具的理解:
无服务器框架和 Terraform 都支持不同的云提供商。在接下来的语句中使用 AWS 作为示例。
将无服务器框架与 Terraform 进行比较,无服务器框架是 无服务器专家,Terraform 是 GP
terraform 完全是基础架构即代码,涵盖了大部分资源。
Serverless 框架只是一个中间层,仅生成 Cloudformation 模板,主要用于 serverless 相关资源,在 aws 中,专注于 lambda、api gateway、dynamodb 等。
您可以直接在Cloudformation模板中编写所有内容,但是模板文件会很大,使用JSON/Yaml模板也很难维护。只需serverless.yml 中的几十行,Serverless 框架就可以生成上千行或上千行的 cloudformation 模板。它节省了大量处理cloudformation编码的时间。顺便说一句,如果你已经知道 cloudformation 语法,你可以很容易地将相同的 cloudformation yaml 代码直接放在resources 部分,无服务器模板知道如何创建它们。
您也可以编写 Terraform 代码来管理 lambda、api gateway、Dynamodb。也许你可以得到比 Cloudformation 模板更少的代码,但还是太复杂了。
另一方面,让无服务器框架处理所有 AWS 资源是没有意义的,其他工具已经做得最好了,例如 EC2、VPC、ECS 等。
无服务器框架仍在开发中,由于它的流行,许多开发人员每天都参与其中,为其添加功能。也许有一天你可以得到你需要的东西,但现在你必须在某些情况下将无服务器框架与 Cloudformation 或 Terraform 或其他工具混合在一起。
【讨论】:
我发现 Serverless 只是更好地处理了 Lambda 和 API Gateway 的配置。部署也不那么麻烦。
事实上,我有几个项目,其中 Serverless 处理 Lambda 函数 + endopints,而任何其他资源都由 Terraform 处理。
您甚至可以使用 Terraform 使用 local-exec 命令部署无服务器项目。
【讨论】:
2021 年更新:Serverless 团队在 this blog post 中自行解释了差异。
它的要点是两者可以一起使用:
来自博文:
例如 如果您有一个共享数据库和两个在其中创建表的无服务器应用程序,则该数据库应由 Terraform 管理。在应用部署和拆卸过程中,具体的表应该由无服务器框架创建和销毁。
【讨论】: