Le problème
Beaucoup de projets Terraform démarrent bien mais deviennent rapidement ingérables : un seul state monolithique, du copier-coller entre environnements, des plans qui prennent 10 minutes.
Architecture de modules recommandée
infra/
├── modules/
│ ├── api-gateway/ # Module API Gateway
│ ├── lambda/ # Module Lambda générique
│ ├── dynamodb/ # Module DynamoDB
│ ├── monitoring/ # Module CloudWatch + alertes
│ └── networking/ # Module VPC / Security Groups
├── environments/
│ ├── dev/
│ ├── staging/
│ └── prod/
└── terragrunt.hcl # Config Terragrunt racinePrincipes clés
- Un module = une responsabilité : séparez API Gateway, Lambda, DynamoDB
- Variables typées : utilisez les types complexes de Terraform
- Outputs explicites : chaque module expose ce dont les autres ont besoin
- Terragrunt pour le DRY : évitez la duplication entre environnements
Module Lambda réutilisable
Un bon module Lambda doit accepter :
- Le code source (S3 ou local)
- La configuration mémoire/timeout
- Les variables d'environnement
- Les policies IAM additionnelles
- La configuration de monitoring
Terragrunt : le game changer
Terragrunt élimine la duplication entre environnements. Un seul terragrunt.hcl par environnement qui référence les modules avec des variables spécifiques.
Résultats observés
- Plans Terraform passés de 10min à 30s
- Onboarding d'un nouveau dev : 1 jour au lieu de 1 semaine
- Déploiements reproductibles et auditables
- Drift detection automatisée
Besoin de structurer votre IaC ? Contactez-moi.