0

私は、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 人の開発者が参加し、一部の開発者は別のリソースでのみ作業します。

どのような戦略に従うようにアドバイスしますか? それとも、他のアイデアやベストプラクティスがありますか?

ご協力いただきありがとうございます。

4

1 に答える 1