liveBook · Manning

Composability

As explained in Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform

Composability is the property of an infrastructure system whose resources can be assembled in different combinations and updated independently.

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

How Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform covers it

How deep it goes
Explains independent resource updates, module patterns, repository risks, and assessment questions without detailing implementation syntax.
Examples
Uses network, server, load-balancer, database, shared-module, repository, and infrastructure-script examples.
What it assumes
Assumes familiarity with infrastructure as code and infrastructure resources while defining composability through concrete modules and environments.
What you can do after
Evaluate infrastructure configurations and design modules that combine resources while isolating updates and reducing failure blast radius.
How it connects
Connects infrastructure as code with reproducibility, idempotency, evolvability, infrastructure modules, repository structure, and design patterns.

Also explained in

Compare how 3 books explain composability →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform. The section links point to the parts of the book it draws on.