# 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.