Composability lets infrastructure resources be assembled in different combinations and updated independently. Treat infrastructure as building blocks: a network, servers, load balancer, and database can form different environments without forcing every resource to change together. Higher composability reduces effort when creating systems and limits the blast radius of changes; hidden dependencies create the opposite risk. section 1.3.3 section 1.4.1
Apply composability through modular infrastructure design:
- Separate resources into modules with clear inputs, outputs, defaults, and update boundaries. section 1.3.3 section 3.6
- Choose patterns according to purpose, reuse, update frequency, and whether multiple resources must be combined. section 3.6
- Use factory modules for reusable resources, composite modules to combine modules, and builder modules when users select specific resources. section 3.6
- Share standardized modules across teams while allowing teams to compose systems and override configuration for specific needs. section 5.0
- Control shared-module changes with versioning, repository structure, and build practices so dependencies do not break unexpectedly. section 5.1.3
Replacing a production load balancer
A production environment combines network, server, and load-balancer modules. When traffic grows, replace the standard load balancer with a premium one while the network and servers continue running. A teammate can later add a database without changing those existing components. section 1.3.3
Assessing an infrastructure configuration
Review an infrastructure script or configuration and ask whether it supports reproducibility, idempotency, composability, and evolvability. Check whether it can mix configuration pieces into new infrastructure components and limit changes to a small set of less-critical resources. section 1.3.5
Figure 1.9 You build your production environment with building blocks of infrastructure so you can add new resources, like the premium load balancer, easily.
Shows a production environment assembled from infrastructure building blocks and expanded by swapping or adding modules. section 1.3.3


