Three nouns do most of the work in Jaws Deploy infrastructure modelling: environment, target, and tag. Used with intent they keep the model small even as the deployment surface grows.
The three nouns
Environments are policy
An environment isn't just a name - it's a scope. When a release is deployed to Production, the platform resolves every variable through the Production scope, runs every step that opted into Production, and writes the deployment to Production's history.
That is why "deploy this release to Staging then to Production" works as a sentence: each environment carries its own resolution context.
Tags as schema
Tags are plain strings, but treat them as schema. Pick conventions early - role tags (role:app, role:db, role:cache), region tags (region:eu-west), tenancy tags (tenant:acme). Then a single deployment process can scope its database step to role:db, its package step to role:app, and its smoke test to role:app, region:eu-west.
Reduce the temptation to introduce new noun types as the surface grows. A region is a tag. A cluster is a tag. A tier is a tag.