Why modules enable reusability in Terraform - Performance Analysis
We want to see how using modules affects the work Terraform does as we add more resources.
Specifically, how does reusing modules change the number of operations Terraform performs?
Analyze the time complexity of this Terraform code using modules.
module "server" {
source = "./server_module"
count = var.server_count
name = "app-server-${count.index}"
}
variable "server_count" {
type = number
default = 3
}
This code creates multiple servers by reusing the same module multiple times.
Look at what happens repeatedly when Terraform runs this code.
- Primary operation: Creating each server resource inside the module.
- How many times: Once per module instance, equal to
var.server_count.
As you increase the number of servers, Terraform repeats the module's resource creation that many times.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | About 10 times the module's resource operations |
| 100 | About 100 times the module's resource operations |
| 1000 | About 1000 times the module's resource operations |
Pattern observation: The work grows directly with the number of module instances.
Time Complexity: O(n)
This means the total work grows in a straight line as you add more module instances.
[X] Wrong: "Using modules makes Terraform do the work only once no matter how many times the module is used."
[OK] Correct: Each module instance creates its own resources, so Terraform repeats the work for each one.
Understanding how modules scale helps you design infrastructure that grows smoothly and stays organized.
What if we changed the module to create multiple resources inside itself instead of using count outside? How would the time complexity change?