Event Sourcing and CQRS (Command Query Responsibility Segregation) are powerful but complex patterns. This question explores when they add value versus when they're over-engineering.

Contributors can share real-world use cases where these patterns solved difficult problems. Discuss trade-offs, operational complexity, and alternatives like event streaming with Kafka.

What are the signs that your system needs Event Sourcing? How do you handle event versioning and schema evolution?