Practices
Habits and tooling that make the principles and architectures stick.
Enforce boundaries with tooling
Use crate or project references, dependency-rule linters and architecture tests; documentation alone is not enough.
- Serves
- Evolutionary architecture with fitness functions
Architecture decision records
Record each significant decision together with its context.
Test at the seams
Fast core tests with in-memory adapters, contract tests per port, and few end-to-end tests.
- Pairs with
- Hexagonal architecture (ports and adapters) (In-memory adapters make core tests fast.)
Twelve-factor discipline
Keep configuration, logging and process handling disciplined and environment-independent.
Observability as a port
Structured logs, traces and metrics are a first-class outbound port, not an afterthought.
CI as the gatekeeper
Format, lint, type-check and test on every change.