Message and Queueing systems
As you start to build out cloud-scale applications, you need ways to decouple different tiers of the application so that it can scale independently. This is for several reasons, including making your application more resilient and allowing each available tier to scale independently of the other tiers. You might only need to have a single EC2 instance running at any point in time. Encapsulating this instance in an autoscaling group and connecting it to a managed queue allows the queue to take the requests and ensure that they get processed by the EC2 instance, even if it happens to stop and terminate for some reason. In another scenario, if there is a burst of traffic for any amount of time and it is too much for the single instance to handle, then having the request flow first in a queue allows an auto-scaling group to scale up more instances based on the number of requests coming in at a certain point of time. This is easy to think of in an order processing...