Event-Driven Architecture

Event-driven code reacts to facts represented as events. Domain and application logic should not depend on a concrete broker or transport client.

src/app/
├── domain/
├── application/
├── event_handlers/
└── broker_adapters/

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_handlers
      collectors:
        - type: directory
          directories: ["src/app/event_handlers"]
    - name: broker_adapters
      collectors:
        - type: directory
          directories: ["src/app/broker_adapters"]
  ruleset:
    domain:
      disallow_layer_dependencies: [application, event_handlers, broker_adapters]
      disallow_external_imports: [celery, kafka, pika, redis]
    application:
      disallow_layer_dependencies: [event_handlers, broker_adapters]
    event_handlers:
      disallow_layer_dependencies: [broker_adapters]

Handlers translate incoming messages into application calls; broker adapters own transport details. Deply cannot prove delivery guarantees, ordering, deduplication, retries, schema compatibility, or idempotency.

Validate

deply validate --config=deply.yaml
deply analyze --parallel --config=deply.yaml

Reference: Event-driven architecture style.


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