In software development, initially building a "Monolithic" structure is fast and logical. However, as the project grows, having different teams work on the same codebase and the risk of a Single Point of Failure necessitates an architectural evolution.
Designing Resilient Systems
If you are developing a backend that receives tens of thousands of requests per second, not only the execution speed of the code but also the response time of the network and database are crucial. This is where caching (Redis), Load Balancing, and Event-Driven architectures come into play.
Isolating Components
You don't want your services waiting on each other (synchronous execution). By using message brokers like Kafka or RabbitMQ, you can prevent others from being blocked while one process is executing.