React to facts that already happened#
SendEmail is a command: please do this. OrderPlaced is an event: this happened. Keep the distinction practical rather than turning it into domain-theory ceremony.
Events loosen runtime coupling and make extension easier, while introducing eventual consistency, duplicates, ordering, tracing, testing, and schema evolution. New optional fields and backward compatibility matter because consumers upgrade at different times.
Related practice problems
Use the manifest-backed prompts below to apply this lesson in a complete design.
- Apache Kafka introductionApache Kafka Documentation