Event Sourcing
Event Sourcing stores state changes as an append-only sequence of events and rebuilds current state or projections from that history. Use it selectively when auditability, temporal reconstruction, or domain history justifies its operational cost.
src/app/
├── domain/
├── application/
├── event_store/
├── projections/
└── interface/
Complete Configuration
deply:
paths: ["."]
exclude_files:
- '.*/\.venv/.*'
- '.*/tests?/.*'
layers:
- name: domain
collectors:
- type: directory
directories: ["src/app/domain"]
- name: application
collectors:
- type: directory
directories: ["src/app/application"]
- name: event_store
collectors:
- type: directory
directories: ["src/app/event_store"]
- name: projections
collectors:
- type: directory
directories: ["src/app/projections"]
- name: interface
collectors:
- type: directory
directories: ["src/app/interface"]
ruleset:
domain:
disallow_layer_dependencies: [application, event_store, projections, interface]
disallow_external_imports: [sqlalchemy, redis, kafka, requests]
application:
disallow_layer_dependencies: [event_store, projections, interface]
event_store:
disallow_layer_dependencies: [projections, interface]
projections:
disallow_layer_dependencies: [application, event_store, interface]
interface:
disallow_layer_dependencies: [event_store]
Deply can isolate domain events, storage adapters, and projections. It cannot verify append-only persistence, optimistic concurrency, replay correctness, event versioning, snapshots, or projection consistency.
Validate
deply validate --config=deply.yaml
deply analyze --parallel --config=deply.yaml
References: Fowler’s Event Sourcing and Event Sourcing pattern guidance.