liveBook · Manning

Backward compatibility

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

Backward compatibility is the property that a newer version continues to support interfaces, behaviors, or configurations expected by existing users or dependents.

Backward compatibility lets a newer infrastructure-as-code tool version preserve existing configurations and behavior while adding new features. Support usually lasts only briefly before older features are deprecated. section 13.2.2

Manage a backward-compatible upgrade through controlled, incremental changes:

  • Pin module, tool, and plugin versions, then inspect breaking changes before selecting an upgrade path. section 13.2.1
  • Test the upgrade outside production and avoid jumping directly to the latest version. section 13.2.1
  • Refactor high-level resources first, deploy and test them, then proceed toward lower-level resources. section 13.2.2
  • Use rolling updates to limit the blast radius, and roll forward when a single resource fails. section 13.2.2

Upgrading from 1.7 to 3.0

A tool upgrade from 1.7 to 3.0 preserves compatibility, so DNS and load-balancer resources are upgraded first. Servers follow one at a time; an override-script failure affects only one server and receives a manual fix. section 13.2.2

Figure 13.6 You plan your tool upgrade path and account for backward-compatible versions and versions with breaking changes.

Use the upgrade-path figure to compare backward-compatible steps with versions that introduce breaking changes. section 13.2.1

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

How deep it goes
Explains version pinning, staged resource updates, testing, rolling updates, and failure recovery, stopping short of tool internals.
Examples
Uses versions 1.7, 3.0, and 4.0, plus DNS, load balancers, servers, and a failing production override script.
What it assumes
Assumes infrastructure-as-code configurations, modules, plugins, version pinning, testing pipelines, and resource dependencies.
What you can do after
Apply it to plan, test, stage, and safely recover from backward-compatible infrastructure-as-code tool upgrades.
How it connects
Connects backward compatibility with infrastructure as code, version pinning, breaking changes, refactoring, rolling updates, and deployment testing.

Also explained in

Compare how 18 books explain backward compatibility →

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.