# Rule 4: Eventual Consistency between Aggregates
> [!Note]
> When propagating changes across [[Aggregate]], use [[Domain Events]] and **asynchronous mechanisms** so that updates become **eventually consistent**, enhancing **scalability** and **resilience**.
To synchronize state across separate [[Aggregate]], first complete the transaction in the originating [[Aggregate]] (**Aggregate A**), then emit a [[Domain Events]] announcing the change. Downstream components receive this notification **asynchronously**, allowing them to react without blocking the original transaction. Each affected Aggregate performs its own update in a separate transaction, achieving **deferred consistency** rather than immediate coupling. By accepting this eventual consistency model, the system can scale more effectively and remain robust in the face of partial failures.
---
## Summary Table
| Phase | Description |
| ------------------------------- | ------------------------------------------------------------------------------------------------ |
| **1. Change in Aggregate A** | Perform and commit the transaction within the originating [[Aggregate]] to modify its state. |
| **2. Domain Event Publication** | Generate and publish a [[Domain Event]] that encapsulates the state change for subscribers. |
| **3. Asynchronous Reception** | Downstream components subscribe and receive the event without blocking the original flow. |
| **4. Deferred Update** | Each affected [[Aggregate]] loads the event on demand and applies its own transaction to update. |
---
## References
- Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional.
- Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional.
- Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media.
- Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media.
- Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional.
- Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.