Before choosing a messaging service, answer: one consumer or many, work queue or replayable history, required ordering, tolerated duplicates, throughput, and retention.
| Need | Start with |
|---|---|
| Buffer work for competing consumers | SQS |
| Push one event to many subscribers | SNS |
| Ordered replayable event stream | Kinesis Data Streams |
| Deliver buffered streams to destinations | Data Firehose |
| Route application/SaaS/AWS events by rules | EventBridge |
| Existing ActiveMQ/RabbitMQ protocol | Amazon MQ |
SQS Standard is highly scalable with at-least-once delivery and best-effort ordering. Make consumers idempotent. FIFO adds ordering within message groups and deduplication semantics at lower throughput constraints. Visibility timeout must exceed processing or be extended; repeated failures belong in a DLQ with a deliberate redrive policy.
SNS fan-out commonly publishes to separate SQS queues so each consumer gets independent buffering and retries. EventBridge is better when routing rules, SaaS integration, schemas, or event buses are central.
Serverless still has state and failure
Lambda synchronous, asynchronous, and poll-based invocations retry differently. Reserved concurrency protects capacity; provisioned concurrency reduces cold-start latency. Putting Lambda in a VPC is for access to VPC resources, not general performance. Use RDS Proxy to avoid connection storms.
API Gateway provides managed HTTP/WebSocket entry, authentication, throttling, and endpoint types. Step Functions owns workflow state, retries, branching, and compensation; SQS owns durable work buffering. Cognito User Pools authenticate users; Identity Pools exchange identities for AWS credentials.
Exam lens: “exactly once” is not created by choosing FIFO alone. The producer, broker, consumer, state change, and retry path must agree.
Review card
- Queue distributes work; topic fans out; stream retains ordered records.
- SQS consumers must handle duplicates.
- DLQ is diagnosis and isolation, not automatic recovery.
- EventBridge routes events; Step Functions coordinates workflow state.
- Design retries and idempotency before adding Lambda.