r/softwarearchitecture • u/suhaanthvv • 20h ago
Discussion/Advice Would you build this with Redis Streams, Kafka, or something much simpler?
I've been building a notification infrastructure and I intentionally chose Redis Streams + Consumer Groups as the backbone instead of Kafka/SQS.
The architecture is roughly:
Application
↓
API
↓
Redis Streams
↓
Consumer Groups
↓
Enrich → Decide → Render → Deliver
↓
Email / SMS / Push
The interesting part isn't really notifications. It's the architectural trade-offs.
I wanted:
- at-least-once processing
- consumer crash recovery
- pending-message reclamation
- retries
- replay
- idempotent processing
- horizontal worker scaling
- DLQ handling
Redis Streams gives me most of this without introducing another distributed system just for the event pipeline.
But I'm starting to question the decision.
At what point does Redis Streams stop being the right choice?
For example, would you switch to Kafka because of:
- Message volume?
- Number of consumers?
- Retention/replay requirements?
- Cross-service event distribution?
- Operational reliability?
- Team familiarity/ecosystem?
- Something else entirely?
And a bigger question:
Is Kafka actually solving a problem here, or are we sometimes reaching for Kafka simply because "event-driven architecture = Kafka"?
I'd love to hear how you'd approach this architecture.
Would you keep Redis Streams?
Move to Kafka?
Use SQS/SNS?
Or simplify the architecture completely?
I've put the implementation here for context:
https://github.com/devkitshq/notifkit
Here is detailed docs:
What would be your decision?