Asynchronous Communication in system designs

Async communication is one of the most important aspect of any complex system. Nearly all system design questions I have encountered in the wild have used this pattern in some form.
To understand what async communication is you need to understand what it is really useful for. Our systems often consist of flows that involve multiple steps. For example, fetch a sitemap and then crawl thousands of pages in the sitemap. Then index those pages. Each of that step has a preceding step. But those steps also independent in a sense, first step just fetches the sitemap. It does not really care what happens after it. The second step cares about the sitemap but not how the sitemap was fetched.
In many synchronous flows such as say money transfer, each step is linked to other steps. For example you withdraw money from sender’s account and then deposit in receivers account. Together this is called a money movement transaction. Second step can not happen unless first step has happened and the first step must also be failed if second step fails. This is called synchronous flows.
Asynchronous communication is achieved using two primary architectural components. Firstly, message queues and second id pub/sub interface. Pub/Sub interface ultimately is designed using message queues and can be seen as an abstraction on top of message queue.
We have done this video to explain to you how message queue based async communication works.
Please subscribe to our newsletter to stay updated with every new tutorial or major video we make.
If you need us to make a video about any specific system design problem do write us an email.




