Building event-driven systems changed how I think about software.
Services shouldn't call each other constantly. They should react to events.
Example:
User signs up β Auth emits an event
β Notification service sends the welcome email
β Analytics service records the signup
β User service continues onboarding
One action. Multiple reactions.
The biggest shift is mental: you stop designing request chains and start designing system reactions. The signup service doesn't need to know who cares that a user signed up β it publishes the fact, and the system reacts.
The honest cost: debugging gets harder. A request chain fails in one place, with a stack trace.β¦