私は、1VPC (+ サブネット、セキュリティ グループ、インターネット ゲートウェイなど)、S3 バケット、EMR クラスター、Redshift、ElasticSearch、いくつかの Lambda 関数、API ゲートウェイ、RDS など、多くのサービスで構成される Datalake プロジェクトに取り組んでいます。
VPC + サブネットと S3 バケットのように、一部のリソースは一度だけ作成され、将来変更されないため、「静的」であると言えます。
他のリソースは、開発および運用プロジェクトのライフサイクル中に変更されます。
私の質問は、プロジェクトの構造を管理する最良の方法は何ですか?
私は最初にこのように始めました:
-modules
.rds
.main.tf
.variables.tf
.output.tf
-emr
-redshift
-s3
-vpc
-elasticsearch
-lambda
-apigateway
.main.tf
.variables.tf
したがって、この方法を実行するだけで、terraform apply
すべてのサービスがデプロイされます。
2番目のオプション(一部の開発者がそれを使用しているのを見ました)は、各サービスが個別のフォルダーにあり、起動したいサービスのフォルダーのみに移動して実行することですterraform apply
このプロジェクトには 2 人から 4 人の開発者が参加し、一部の開発者は別のリソースでのみ作業します。
どのような戦略に従うようにアドバイスしますか? それとも、他のアイデアやベストプラクティスがありますか?
ご協力いただきありがとうございます。