Amazon SQS आणि SNS: Queues आणि Pub/Sub सोप्या भाषेत
Checkout API order टाकते, email/inventory/fraud करावं लागतं. एका request मध्ये केल्यास email slow = user wait. SQS = work queue; SNS = एक event अनेक subscribers — AWS apps चा async backbone.
या chapter मध्ये तुम्ही काय शिकाल
- Async messaging tight coupling पेक्षा का
- SQS queues व SNS topics काय
- Standard vs FIFO, DLQ, fan-out
- Industries
- Lab, errors, FAQ, interview
1. आधी रोजचं उदाहरण
नागपूर ecommerce order O-991. API DynamoDB write → SNS OrderPlaced. तीन SQS: email, inventory, fraud. Email down असला तरी queue वाटते — checkout 200.
2. SQS आणि SNS का?
हे का लागतं?
Monolith प्रत्येक side effect एका HTTP मध्ये. Latency/failure couple होतात. Queue spike absorb; topic broadcast. Retry, buffer, independent scale.
- Producer व slow consumer वेगळे
- Flash sale buffer
- DLQ retry
- एक event → अनेक teams
3. SQS आणि SNS काय?
हे काय आहे?
SQS = managed queue: Send/Receive/Delete. SNS = pub/sub topic: एक Publish, अनेक subscriptions. बहुतेक design: SNS → SQS per worker.
| भाग | काम |
|---|---|
| SQS standard | At-least-once, best-effort order |
| SQS FIFO | Exactly-once helper + order |
| SNS topic | Fan-out publish |
| DLQ | Failed messages hold |
| Visibility timeout | In-flight hide |
| Filter policy | Attribute filter |
4. सुरक्षित messaging path
कसं करायचं (step by step)
- ap-south-1 मध्ये SNS topic order-placed.
- तीन SQS: email, inventory, fraud (standard).
- प्रत्येक queue subscribe; raw delivery optional.
- DLQ + maxReceiveCount 3–5.
- Visibility ≥ process time.
- API Publish; workers Receive/Delete.
- Idempotent workers.
- Alarm queue depth + DLQ.
- FIFO → MessageGroupId.
- Go-live आधी load-test.
# Mental model
# sns.publish(TopicArn=..., Message='{"order":"O-991"}')
# sqs.receive_message(QueueUrl=..., MaxNumberOfMessages=10, WaitTimeSeconds=20)
# process(); sqs.delete_message(QueueUrl=..., ReceiptHandle=...)
5. SQS vs SNS vs EventBridge
| Choice | कधी |
|---|---|
| SQS | Work queue |
| SNS | Fan-out |
| EventBridge | Filters/partners/schedules |
| Kinesis | Streaming retain |
6. Multi-industry walkthrough
Banking: SNS ledger + filter. Hospital: PDF queue. SaaS: FIFO per tenant_id.
7. Security checklist
- PII वर SSE
- Least-privilege IAM
- Queue policy Principal नको *
- Secrets नको — tokens
8. Industries आणि roles
- Ecommerce: order email/inventory
- Fintech: KYC async
- EdTech: transcode jobs
- IT: ticket fan-out
- Healthcare: reminders
9. Lab: SNS → दोन SQS
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- topic + 2 queues.
- Subscribe + publish.
- Receive/delete; other queue still has copy.
- DLQ attach.
- DLQ alarm.
Cleanup (billing थांबवा)
- Subscriptions/queues/topic/alarms delete.
- Lab IAM clean.
10. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| Delete विसरलो | Success नंतर delete. |
| Visibility लहान | p99 पेक्षा मोठं. |
| FIFO group नाही | Business key group. |
| फक्त SNS→Lambda | SQS buffer+DLQ. |
| Hard-coded account | Conditions. |
| Poison JSON | Validate+DLQ. |
| Public queue | Principal restrict. |
| Filter नाही | Filter policy. |
| Double email | Idempotency. |
| Alarm नाही | Depth alarm. |
11. Troubleshooting checklist
- Invisible → visibility/workers.
- Publish deny → policy/IAM.
- Duplicates → idempotent.
- FIFO throttle → groups.
- Long poll 20s.
- SSE for PII.
12. FAQ
प्र. SQS मोफत?
Request/data; free tier docs.
प्र. Standard vs FIFO?
FIFO=order; standard=scale.
प्र. SNS email?
Ops OK; app→SQS.
प्र. Kafka?
Different; streams→MSK/Kinesis.
प्र. Exactly-once?
FIFO+idempotent.
प्र. Cross-region?
Regional; design replicate.
13. Interview Q&A
प्र. SQS?
Managed async queue.
प्र. SNS?
Pub/sub fan-out.
प्र. Visibility?
Receive नंतर hide time.
प्र. DLQ का?
Poison वेगळे.
प्र. SNS+SQS?
Fan-out + buffer/DLQ.
प्र. Idempotency?
दोनदा = एकच effect.
14. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Treat every SQS message as at-least-once. Build idempotent workers first; fancy FIFO later.
Ravindra Bagale's Tip (MR)
प्रत्येक SQS message = at-least-once. आधी idempotent workers; नंतर FIFO.
Tip (HI)
हर SQS संदेश को at-least-once मानो — पहले idempotent worker, फिर FIFO।
घरी करून बघा
- Food order SNS→3 SQS sketch.
- DynamoDB idempotent email mark.
- 3 CloudWatch alarms.
थोडक्यात सांगायचं तर
- SQS=work; SNS=fan-out.
- DLQ+visibility+idempotent.
- SNS→SQS→worker.
- FIFO = order matters.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








अजून cards: Ravi Sir's Cards.
सराव Tasks
Maple Leaf Books हा टोरांटो मधला पुस्तक विक्री व्यवसाय आहे. Emily Tremblay त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे CAD मध्ये मोजले जातात आणि AWS resources ca-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं Queues list
का: Backlog पाहा.
काय करायचं: SQS queues list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Queue URL
का: Send आधी URL.
काय करायचं: mapleleafbooks-orders URL.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Topics
का: Fan-out.
काय करायचं: SNS topics.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं FIFO group
का: GroupId.
काय करायचं: FIFO GroupId तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Delete ack
का: Ack.
काय करायचं: Success नंतर delete तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Queue attrs
का: Visibility/DLQ.
काय करायचं: attrs All on orders queue.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Send
का: Produce.
काय करायचं: orders queue send hello.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Receive
का: Consume.
काय करायचं: orders receive.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Topic attrs
का: Topic inspect.
काय करायचं: events topic attrs.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Publish one
का: Publisher LP.
काय करायचं: events Publish.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम DLQ JSON
का: DLQ नाव.
काय करायचं: dlq_name orders-dlq.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम SNS→SQS
का: Buffer.
काय करायचं: SNS→SQS→Lambda तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Long poll
का: Empty cut.
काय करायचं: Long poll seconds?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Delete
का: Success ack.
काय करायचं: orders delete receipt abc.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड SendMessage one
का: Producer LP.
काय करायचं: orders queue SendMessage.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड Visibility JSON
का: Process time.
काय करायचं: VisibilityTimeout 60.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.