43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
# Layer 2
|
|
|
|
Second layer of the chain. This file is imported by layer1.md and imports
|
|
layer3.md in turn, forming a 3-deep @import chain that the TOK scanner
|
|
should flag.
|
|
|
|
## Architecture Notes
|
|
|
|
The ficticious project uses a layered architecture split across:
|
|
|
|
- Application layer (HTTP adapters, CLI adapters)
|
|
- Domain layer (pure business logic)
|
|
- Infrastructure layer (databases, caches, external APIs)
|
|
|
|
## Dependency Rules
|
|
|
|
- Application depends on domain but not infrastructure.
|
|
- Infrastructure implements ports defined in the domain.
|
|
- Domain never imports from application or infrastructure.
|
|
- Cross-cutting concerns (logging, tracing) live as ports.
|
|
|
|
## Observability
|
|
|
|
- Structured logs with correlation ids.
|
|
- Metrics scraped from a `/metrics` endpoint.
|
|
- Trace spans around domain service boundaries.
|
|
- Health checks separate from metrics endpoints.
|
|
|
|
## Data Access
|
|
|
|
- Repositories return domain objects, never ORM entities.
|
|
- Database migrations numbered sequentially.
|
|
- Idempotent migrations where feasible.
|
|
- Readonly replicas for analytical queries.
|
|
|
|
## Caching
|
|
|
|
- Read-through cache for hot entities.
|
|
- TTL chosen per entity class.
|
|
- Invalidate on write, not on read miss.
|
|
- Measure hit-rate per cache bucket.
|
|
|
|
@layer3.md
|