A company is designing a new microservices-based application on AWS. They need to decouple services and ensure asynchronous communication. Which AWS service should they use?
Amazon SQS provides fully managed queues that decouple producers from consumers, letting microservices communicate asynchronously without direct invocation. This satisfies the asynchronous communication requirement, since messages persist durably until a consumer polls and processes them, absorbing traffic spikes and service failures.
Why this answer
Amazon SQS (Simple Queue Service) is the correct choice because it provides a fully managed message queue that enables asynchronous communication between microservices. By decoupling the components, SQS allows one service to send messages to a queue, and another service to poll and process those messages independently, ensuring fault tolerance and scalability without requiring both services to be available simultaneously.
Exam trap
The trap here is that candidates often confuse Amazon SNS (pub/sub) with SQS (queue), thinking both provide decoupling, but SNS requires subscribers to be active or integrated with a queue, whereas SQS inherently buffers messages for asynchronous consumption.
How to eliminate wrong answers
Option A is wrong because Amazon Kinesis is designed for real-time streaming data ingestion and processing (e.g., log streams, clickstreams), not for decoupling point-to-point asynchronous messaging between microservices; it uses shards and records, not queues with individual message visibility. Option C is wrong because AWS Lambda is a compute service that runs code in response to events, not a messaging or decoupling service; it can be a consumer or producer but does not itself provide a queue for asynchronous communication. Option D is wrong because Amazon SNS is a pub/sub messaging service that pushes messages to multiple subscribers (fan-out), but it does not provide a queue for decoupling—subscribers must be available or use a queue integration; SNS alone does not offer the buffering and polling model needed for true asynchronous decoupling.