您如何将Hashicorp-Terraform与无服务器框架进行比较



我想知道Terraform和无服务器之间有什么区别。他们做同样的事情,例如管理您的基础架构,并将您的基础架构表示为代码?

您真的需要一个无服务器框架(serverless.com)?

谢谢

我对无服务器框架和其他类似无服务器的工具的理解:

无服务器框架和Terraform都支持不同的云提供商。在下一个语句中使用 AWS 作为示例。

将无服务器框架与Terraform进行比较,无服务器框架是无服务器专家,Terraform是 GP

Terraform是完全基础架构,作为涵盖大多数资源的代码。

无服务器框架是一个中间层,仅生成云形式模板,该模板主要用于无服务器相关的资源,在AWS中,专注于lambda,api网关,dynamodb等。

您可以直接在CloudFormation模板中写入全部,但是模板文件将很大,也很难通过其JSON/YAML模板维护。在serverless.yml中有几十行,无服务器框架可以生成一千或几千行云形式模板。它节省了很多时间来处理云形式编码。顺便说一句,如果您已经知道CloudFormation语法,则可以轻松地将相同的CloudFormation YAML代码直接放在resources零件中,无服务器模板知道如何创建它们。

您也可以编写Terraform代码来管理Lambda,API网关,DynamoDB。也许您可以获得比云形式模板更少的代码,但仍然太复杂了。

以另一种方式,让无服务器框架处理所有AWS资源是没有意义的,其他工具已经做得很好,例如EC2,VPC,ECS等。

无服务器框架仍在开发中,由于其受欢迎程度,许多开发人员每天都会添加功能。也许有一天您可以得到所需的东西,但是现在您必须将无服务器框架与CloudFormation或Terraform或其他工具混合在一起。

最明显的区别是,Serveless架构专注于功能 - 服务和Terraform旨在管理包括您的EC2和ECS Instances。AWS lambda部署(并且在其他云中是等效的),但它无法管理您的虚拟机,负载平衡器和所有其他。

我发现无服务器只能更好地处理lambda和API网关的配置。部署也不太麻烦。

实际上,我有一些项目,其中无服务器处理lambda函数 内皮进入,并且任何其他资源都由Terraform处理。

您甚至可以使用Terraform使用local-exec命令来部署无服务器项目。

2021更新:无服务器团队在此博客文章中解释了区别。

它的要点是两者可以一起使用:

  • 无服务器更适合管理应用程序特定的基础架构,该基础架构在每个部署中都被拆除并重新创建
  • Terraform更适合处理共享,更状态的基础架构

摘自博客文章:

例如如果您有共享数据库和两个在其中创建表的无服务器应用程序,则应由Terraform管理数据库。在应用程序部署和拆卸过程中,应由无服务器框架创建和破坏特定表。

最新更新