I have been building event driven micro services. Then, I was wondering, why not event driven monolithic applications.
Now the down side would be scalability issues. I would not be able to make replicas for specific traffic intensive domains.
But other than that I still get many other benefits such as
- eventual consistency
- I also personally find it easier to debug with the right setup, since I can replay the events.
- reduced complexity. decoupling between domains(we still have domains managed in folders)
Additionally we have the monolith benefit: mainly reduced devops.
When the application gains popularity(and so more traffic) then we can easily convert it to micro services. I think converting the code from non event driven to event driven is the most challenging part as it changes the overall architecture significantly.
One criticism I can think of is, is it worth to manage an event bus just for a monolith? If I were to use something like apache kafka, which is quite expensive and challenging to manage, it might not be worth it.
But if I were to use something like NATS Streaming or Redis stream, which more or less does the same job as apache kafka, but light weight and much easier to manage, then I dont think this would be a problem either.
When I google I cant find articles about such ideas, so I am wondering if I am missing something significant.