Blast radius quá rộng và apply quá chậm: một sai sót chạm tới mọi thứ, mỗi lần chạy phải refresh hàng nghìn resource, và state lock làm các team chờ nhau.
Ba tiêu chí chia thường dùng: theo environment, theo domain nghiệp vụ, và theo nhịp thay đổi.
text
prod/network/ # doi vai lan mot nam
prod/data/ # RDS, ElastiCache - doi hiem, blast radius cao
prod/services/api/ # doi hang ngayNối các state độc lập bằng terraform_remote_state:
hcl
data "terraform_remote_state" "network" {
backend = "s3"
config = { bucket = "acme-tfstate", key = "prod/network/terraform.tfstate" }
}
resource "aws_instance" "api" {
subnet_id = data.terraform_remote_state.network.outputs.private_subnet_ids[0]
}Cân bằng cần giữ: chia quá nhỏ cũng có giá.
Hàng trăm state tí hon làm thay đổi xuyên nhiều phần rất phiền và không ai còn nhìn được bức tranh tổng thể.