How to decouple and scale ingestion of 100,000 messages per second?
A company has an application that ingests incoming messages. Dozens of other applications and microservices then quickly consume these messages. The number of messages varies drastically and sometimes increases suddenly to 100,000 each second. The company wants to decouple the solution and increase scalability. Which solution meets these requirements?
Community Insight
This question tests whether you can distinguish true pub/sub decoupling with SQS buffering from analytics or single-shard streaming designs; the trap is assuming Kinesis Data Analytics or one Kinesis shard can absorb sudden 100K/sec bursts.
The scenario requires a fully decoupled, elastically scalable message ingestion path for bursty traffic that can suddenly reach 100,000 messages per second. Publishing to an Amazon SNS topic with multiple Amazon SQS subscriptions lets dozens of consumers process independently, making D the correct answer.
Many learners choose Kinesis Data Streams because it is a streaming service, but option C uses a single shard that cannot handle the required throughput and forces consumers to poll DynamoDB instead of using a durable queue per consumer.
Community Discussion (163 comments)
Comments & Corrections
No comments yet — spotted an error or have a note? Share it below.
Expert Analysis
Why the Answer Is Correct
Option D uses Amazon SNS fan-out to multiple Amazon SQS subscriptions, which cleanly decouples the ingestion application from dozens of consumer applications and microservices. Each consumer can process from its own SQS queue independently, so a slow or failed consumer does not block the others, and SQS buffers sudden spikes instead of forcing synchronous processing. Standard SQS queues and SNS topics are designed for high-throughput, distributed workloads, making this the right architecture for traffic that can jump to 100,000 messages per second. The design also supports retries, dead-letter queues, and independent scaling per consumer, which directly addresses the scalability requirement.Why the Other Options Are Wrong
Option A misuses Amazon Kinesis Data Analytics, which is an analytics service that reads from streaming sources rather than a general-purpose message distribution layer for dozens of applications. Option B scales EC2 instances based on CPU but does not decouple producers from consumers, and Auto Scaling reacts too slowly for sudden 100,000-messages-per-second bursts. Option C is limited by a single Kinesis shard, whose throughput is far below the stated burst, and having consumers poll DynamoDB adds latency and unnecessary read pressure. None of these alternatives provides the durable, per-consumer buffering and fan-out model that SNS with SQS subscriptions provides.Community Comment Notes
PhucVuu correctly warned not to confuse Kinesis Data Analytics with Kinesis Data Streams, noting that analytics services are for analysis rather than delivering messages to consumer applications. Channn focused on the key requirement with the short note “Key words: decouple,” which aligns with the SNS-to-SQS fan-out design. Buruguduystunstugudunstu pointed out that option C would make consumers continuously poll DynamoDB, which could impact performance, reinforcing why D is cleaner. Some learners raised SNS throughput concerns, but the standard SNS-to-SQS fan-out pattern is the intended scalable decoupling solution for this scenario.Official Reference
Exam Strategy
When a question says “decouple” and mentions many consumers or microservices, look for fan-out with one SQS queue per consumer. Throughput limits should steer you away from single-shard Kinesis and toward SNS with SQS subscriptions.
Frequently Asked Questions
Why is Kinesis Data Streams with a single shard wrong for 100,000 messages per second?
A single Kinesis shard supports roughly 1 MB/s or 1,000 records/s, so it cannot absorb a sudden 100K/sec burst. Option D scales through SNS fan-out to multiple SQS queues.
Does SNS fan-out to SQS still fit if dozens of microservices consume the same messages?
Yes. Each microservice gets its own SQS subscription and queue, so it consumes independently, buffers bursts, and can scale or retry without affecting other consumers.
Related Analysis
Practice All SAA-C03 Questions
Access 120 questions with complete answers and detailed explanations.
View Full SAA-C03 Practice Test →