I plan to go into more detail in my next few post in this post I would just like to give a broad explanation. In AWS inevitably your applications will likely talk to each out. With synchronous communication they talk directly to each other and with asynchronous there’s a queue between the two applications. If these applications talk directly to each other they might become overwhelmed if there’s too much communication ongoing. The best way around this is to “decouple” your application and allow the messaging to scale separately from your application itself. Some of these services that allow you to decouple your application are SQS, Kinesis, and SNS. I will get into all of these into more detail on a later post.