8

我想知道 Terraform 和 Serverless 有什么区别。他们不是在做同样的事情,比如管理您的基础设施,并将您的基础设施表示为代码吗?

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

谢谢

4

4 回答 4

7

我对 serverless 框架和其他类似的 serverless-focus 工具的理解:

Serverless Framework 和 Terraform 都支持不同的云提供商。在接下来的语句中使用AWS作为示例。

将 Serverless 框架与 Terraform 进行比较,Serverless 框架是 Serverless专家,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 或其他工具混合在一起。

于 2017-11-25T04:28:48.307 回答
4

最明显的区别是无服务架构专注于功能即服务,而 terraform 旨在管理基础设施,包括您的 EC2 和 ECS 实例。Serveless.com 可能更适合 AWS Lambda 部署(它在其他云中是等效的)但它无法管理您的虚拟机、负载平衡器和所有其他设备。

于 2017-11-25T02:09:03.127 回答
1

我发现 Serverless 只是更好地处理了 Lambda 和 API Gateway 的配置。部署也不那么麻烦。

事实上,我有几个项目,其中 Serverless 处理 Lambda 函数 + endopints,而任何其他资源都由 Terraform 处理。

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

于 2018-10-29T15:32:20.873 回答
1

2021 年更新:Serverless 团队在这篇博文中自己解释了差异。

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

  • 无服务器更适合管理应用程序特定的基础设施,这些基础设施在每次部署时都会被拆除和重新创建
  • Terraform 更适合处理共享的、更有状态的基础设施

来自博客文章:

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

于 2021-02-08T19:53:26.697 回答