# Dual Write

> A defect in which related state is written to two systems with no atomicity or compensation.

Record: `architecture:dual-write`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: event_messaging
Canonical: https://banes-lab.com/ontology#architecture-dual-write

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Lost Update](https://banes-lab.com/records/architecture/lost-update.md) and before [Read-Your-Writes Violation](https://banes-lab.com/records/architecture/read-your-writes-violation.md).

## Repair

- Refactored by: transactional_outbox, [saga](https://banes-lab.com/records/lexicon/saga.md), [idempotent_consumer](https://banes-lab.com/records/architecture/idempotent-consumer.md), reconciliation_job
- Detected by: database_write_then_message_publish, two_databases_updated_without_transaction_or_outbox, manual_repair_needed
- Violated by: Write related state to two systems without atomicity, outbox, saga, reconciliation, or compensation.
- Measured by: writes to two systems outside one transaction or outbox
- Enforced by: an outbox or saga, verified by integration tests

## Severity

- [discouraged](https://banes-lab.com/records/vocabulary/severity-discouraged.md)

## Category

- [Anti-patterns](https://banes-lab.com/records/architecture-category/anti-patterns.md)

## Force

- [Event messaging](https://banes-lab.com/records/force/event-messaging.md)

## Negated by

- [Outbox Pattern](https://banes-lab.com/records/architecture/outbox-pattern.md)

## Linked from

- [Counting copies](https://banes-lab.com/disciplined-methodology/verify/counting-copies.md)
- [A system is a graph](https://banes-lab.com/software-architecture/model/a-system-is-a-graph.md)
- [Definitions own what, code owns how](https://banes-lab.com/software-architecture/model/definitions-own-what.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
