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.


This site uses Just the Docs, a documentation theme for Jekyll.