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.