FREE LESSON · Applications & software architecture · 4 OF 4

Secure, Evolvable Software Architecture

Application mastery: design for failure and change — Security, migration, and evolutionary architecture

A production design includes its failure transitions.

Authentication establishes an identity claim; authorization decides whether that identity may perform this action on this resource. Data migrations must coexist with old and new code during rollout. Feature flags, compatibility readers, rollback plans, and audit trails make change reversible and attributable.

The happy path describes a demo. Recovery, evolution, and misuse resistance describe a product.

Expand, migrate, contract

To rename a database field safely across rolling deployments: first add the new representation and make code tolerate both; backfill and observe; switch writers and readers; only then remove the old form after no compatible consumer needs it. One destructive step cannot safely span mixed versions.

Compatibility is a time interval, not a version number.
Open this lesson in the interactive course →