Infrastructure as Code
Also called: IaC, Terraform
Defining servers, networks and databases in version-controlled files instead of clicking through a cloud console, so environments can be reproduced exactly.
Your servers, networks, databases, permissions and DNS defined in files that live in git, applied by a tool rather than created by hand in a console.
Why it matters more than it sounds
Reproducibility. You can recreate the environment exactly. This is what makes a disaster recovery plan credible rather than aspirational.
Review. Infrastructure changes go through pull request review like any other change, so a network rule that opens something to the internet gets seen by a second person.
Documentation that is true. The code is the current state. Architecture diagrams drift within months; the code cannot.
Rollback. A bad change is reverted by reverting a commit.
The trap
Partial adoption. If half the estate is in code and half was created by hand, you have the overhead of both and the confidence of neither — and the hand-made half is invariably the part that breaks under pressure.
The fix is not a rebuild. Existing resources can be imported into code incrementally, which is how we normally take over an estate.
Drift
Someone will eventually change something in a console at 2am during an incident. That is fine and often correct. What matters is that the drift is detected afterwards and either codified or reverted, rather than quietly becoming permanent undocumented state.