Nuu*_*rek 3 amazon-web-services terraform serverless-framework serverless
这更像是一个悬而未决的问题,我只是希望得到任何意见和建议。我想到了 AWS,但它可能也与其他云提供商有关。
我想提供易于维护并涵盖现代无服务器架构的所有要求的 IaaC 解决方案。Terraform 是定义基础设施的绝佳工具,拥有众多官方资源和来自社区的稳定支持。我真的很喜欢它的语法和模块的整个概念。然而,使用 Lambdas 是非常糟糕的。它还提出了另一个问题:是否应该使用与基础架构更改相同的流程来部署代码更改?代码和基础设施之间的界限在哪里?
另一方面,无服务器框架允许非常容易地开发和部署 Lambda。当谈到资源的使用时,它非常自以为是,但它带有许多值得一试的开箱即用功能。它不应该真正用于定义整个基础设施。
我目前的方法是使用 Terraform 定义任何共享资源,使用 Serverless 定义任何与域相关的资源。这里我有另一个与我之前的问题相关的问题:部署依赖。简单的场景:Lambda.1
将用户添加到Cognito
(共享资源)Lambda.2
作为触发器。我必须创建一个自定义解决方案来管理部署顺序(Lambda.2
必须先部署等)。可以将无服务器框架部署连接到 Terraform 中,但话又说回来:代码部署是否应该与基础设施部署混合?
完全有可能将两者混合,我不得不这样做了几次。这看起来实际上最终比看起来更简单。
首先,如果您将使用无服务器框架所做的任何事情视为开发微服务(没有相关的基础设施管理负担),那么它就朝着正确的方向迈出了一步。然后,您可以做的是决定使该微服务在内部工作所需的一切都在该微服务中定义为 serverless.yml 中服务配置的一部分,无论是 DynamoDB 表、Auth0 集成、Kinesis 流还是 SQS 、SNS、分配给功能的 IAM 权限等。将所有这些都定义为该微服务的一部分。不需要地形。
现在考虑一下该微服务和其他微服务可能需要更广泛地与之交互的内容。它们对于该服务的内部操作并不重要,但对于集成到组织的其余基础架构中至关重要。这包括诸如无服务器框架服务用于部署到 CloudFormation 的部署 IAM 角色、必须在多个服务和资源之间共享的关系数据库、网络元素(VPC、安全组等)、单体集群(如 ElasticSearch 和 Redis)等内容。 . 所有这些元素都非常适合在无服务器框架之外进行定义,并且与 Terraform 配合得非常好。
任何资源都可以根据需要连接到这些 Terraform 定义的资源,这与从 API 网关端点触发的 Lambda 函数等硬关联不同。
希望有帮助
归档时间: |
|
查看次数: |
541 次 |
最近记录: |