TL;DR: Infrastructure Composition is the practice of combining individual infrastructure resources and services into a higher-level, reusable infrastructure construct that represents a complete capability or environment.
When designing infrastructure, the core operational domains remain familiar whether the environment runs in an on-premises datacenter or a public cloud: compute, storage, networking, databases, security, logging, and diagnostics.
What changes in the cloud is how these capabilities are provided and managed. Physical hardware, hypervisors, storage systems, and network infrastructure are increasingly exposed through software-defined services and APIs. Instead of manually connecting physical components, engineers can combine these services into larger infrastructure constructs.
For example, an application environment may require a network, subnets, routing, security policies, compute resources, databases, storage, and observability. Each of these is an individual capability, but the application does not really consume them as isolated resources. It consumes the environment created by combining them.
We may represent that composition like this:
Application Environment
│
├── Network
│ ├── VPC / VNet
│ ├── Subnets
│ └── Routing
│
├── Security
│ ├── Firewall rules
│ ├── IAM
│ └── Secrets
│
├── Compute
│ ├── Kubernetes cluster
│ └── Node pools
│
├── Data
│ ├── Database
│ └── Object storage
│
└── Observability
├── Logs
├── Metrics
└── Alerts
What is “Composition”?
The word composition means that the individual components retain their own identities while being combined into a larger construct.
A network remains a network. A database remains a database. A Kubernetes cluster remains a Kubernetes cluster. However, when they are combined with the required security, storage, identity, and observability components, they can collectively represent an application environment.
The resulting construct can then become a reusable building block.
Example:
Network + Security + Compute + Database + Storage + Observability = Application Environment
Instead of designing these resources independently for every application, the composition can be defined once and reused with appropriate parameters.
This is where Infrastructure Composition define how infrastructure capabilities are assembled into something that can be consumed consistently.
Infrastructure as Code tools such as Terraform, OpenTofu, Bicep, or Pulumi can implement this approach, while Infrastructure Composition is a broader architectural concept. The important part is the composition of capabilities.
We can summarize this part of series as;
Abstraction > Platform APIs > Infrastructure Composition > Application Environments
In next post we will discuss about Application Environments & Infrastructure Isolation.
Back to Certified Cloud Native Platform Engineering Associate Preparation