Yashveer Singh
Connect
<- All posts
SaaS Architecture and Scaling12 min read

Event Driven Architectures: When They Help and When They Hurt

Event driven architecture is the pattern where services communicate by emitting and consuming events rather than calling each other directly. The pattern decouples producers from consumers. New consumers can be added without changes to producers. The trade off is that the flow of control is no longer visible from any single piece of code. Used well, it scales well. Used poorly, it produces systems nobody can debug.

Written by Yashveer Singh, founder of Yashveer Labs.

What you actually need to know

  • Event driven helps with fan out and decoupling. Hurts with synchronous flows.
  • Eventual consistency is inherent. The application has to handle it.
  • Observability across services is required.
  • Idempotency on every consumer is non negotiable.
  • Going event driven for everything produces unreadable systems.
WorkloadEvent driven?
Fan out to multiple consumersYes
Producer and consumer scale differentlyYes
Adding new functionality without modifying producerYes
Synchronous business workflowNo
Strong consistency requiredNo
Single producer to single consumerProbably not
Long running multi step workflowWorkflow engine, not raw events

The core argument

Event driven architecture is one of those patterns that sounds good in concept and produces complexity in practice unless used deliberately. The pattern decouples producers from consumers. The producer emits an event. The consumers react. New consumers can be added without changes to the producer. The flexibility is real.

The cost is also real. The flow of control is no longer visible from any single piece of code. The team that needs to understand what happens when a user signs up has to trace events across multiple services. The debugging is harder. The reasoning is harder. The eventual consistency is something the application has to handle.

The teams that use event driven well pick specific surfaces. A signup that needs to trigger emails, analytics, and onboarding flows is a good event driven surface. The producer does not need to know about the consumers. The consumers can be added or modified independently. The fan out is the value.

The teams that use event driven badly go event driven for every interaction. Direct service to service calls become events. The flow is broken into pieces nobody can follow. The system becomes impossible to debug. The team has to rebuild the synchronous flow conceptually every time someone needs to change anything.

The right approach is selective. Pick the surfaces that benefit from decoupling and fan out. Use direct calls or workflow engines for everything else. The hybrid system is easier to reason about than the pure event driven one.

The decision map

QuestionEvent drivenDirect call
Multiple consumers for the same event?YesNo
Producer should not know about consumers?YesNo
Need to add new consumers without modifying producer?YesNo
Strong consistency required?NoYes
Synchronous business flow?NoYes
Single producer to single consumer?Probably notYes
Long running multi step?Workflow engineN/A

How much does this cost

InvestmentCost
Event broker (Kafka, SQS, Redis Streams)Modest infrastructure
Observability and tracingReal engineering investment
Idempotency in consumersPer consumer engineering
Dead letter handlingPer consumer engineering
Team learning curveReal, weeks of investment
Ongoing operationsReal

Features the event driven setup must have

  • Event broker with appropriate guarantees.
  • Schema registry for event shapes.
  • Idempotency on every consumer.
  • Dead letter handling.
  • Distributed tracing across producers and consumers.
  • Documentation of which events exist.
  • A clear catalog of producers and consumers.
  • Observability on event latency and throughput.

Expert opinion

Event driven architecture is a powerful tool used for the right problems and a complexity tax used for the wrong ones. The teams that pick surfaces deliberately get the decoupling and fan out where it helps. The teams that go event driven for everything produce systems that are hard to reason about and hard to debug. The discipline is to know which interactions benefit from events and which do not.

>

Yashveer Singh, founder of Yashveer Labs

How this played out on a real project

A client SaaS had built their entire backend as event driven. Every interaction was an event. The team had spent six months on the architecture. The product velocity had crashed.

We audited the events. Most of them were single producer to single consumer. The events added complexity without benefit. The flow of control was hidden behind broker indirection that nobody needed.

We migrated the single consumer events to direct calls. The pattern became hybrid. Fan out events stayed event driven. Single consumer interactions became direct calls. Long running workflows moved to a workflow engine.

The velocity recovered. The debugging became tractable. The team has run the hybrid architecture for two years without significant issues. The lesson was that event driven is a tool, not an architecture choice for everything.

For more on the related work, see the outbox pattern a SaaS reliability cheat code and message queues compared SQS Kafka RabbitMQ Redis streams.

Common mistakes teams make

  1. Going event driven for every interaction.
  2. Single consumer events that should have been direct calls.
  3. No idempotency on consumers. Reruns produce duplicates.
  4. No dead letter handling. Failed events disappear.
  5. No distributed tracing. Debugging is a fishing expedition.
  6. No schema registry. Events drift in shape.
  7. No documentation. Tribal knowledge.
  8. Treating event driven as the modern architecture rather than as a tool.

A 30 day decision and adoption plan

  1. Week one. Inventory the candidate interactions. Identify the ones with fan out.
  2. Week two. Set up the event broker. Establish patterns for idempotency and dead letter.
  3. Week three. Migrate the first fan out surface.
  4. Week four. Document the architecture. Train the team. Set up observability.

For more on the related work, read the outbox pattern a SaaS reliability cheat code and batch processing vs streaming the choice founders often conflate. On the broader architecture side, the modular monolith how to buy yourself two years is the natural next read.

FAQ

Frequently asked

Author

Why I am the right person for this kind of build

I do not have a degree yet. I do not need one. I have shipped Dwarka Bricks, Expert Tutorials, Prominence Football Academy, Velmora, and Nexli. The work is on real URLs, used by real people. Yashveer Singh, founder of Yashveer Labs. If the topic on this page is the one you are facing right now, I have done it for someone else and I can do it for you.

Related reading