Ravindra BagaleCourses & study guides English Track your progress

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 standardAt-least-once, best-effort order
SQS FIFOExactly-once helper + order
SNS topicFan-out publish
DLQFailed messages hold
Visibility timeoutIn-flight hide
Filter policyAttribute filter
API → SNS → SQS workers → effectsOrderPlaced
Email+stock+fraud parallel

4. सुरक्षित messaging path

कसं करायचं (step by step)

  1. ap-south-1 मध्ये SNS topic order-placed.
  2. तीन SQS: email, inventory, fraud (standard).
  3. प्रत्येक queue subscribe; raw delivery optional.
  4. DLQ + maxReceiveCount 3–5.
  5. Visibility ≥ process time.
  6. API Publish; workers Receive/Delete.
  7. Idempotent workers.
  8. Alarm queue depth + DLQ.
  9. FIFO → MessageGroupId.
  10. 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कधी
SQSWork queue
SNSFan-out
EventBridgeFilters/partners/schedules
KinesisStreaming 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)

  1. topic + 2 queues.
  2. Subscribe + publish.
  3. Receive/delete; other queue still has copy.
  4. DLQ attach.
  5. DLQ alarm.

Cleanup (billing थांबवा)

  1. Subscriptions/queues/topic/alarms delete.
  2. Lab IAM clean.

10. सामान्य errors आणि fixes

प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.

Error / लक्षणFix
Delete विसरलोSuccess नंतर delete.
Visibility लहानp99 पेक्षा मोठं.
FIFO group नाहीBusiness key group.
फक्त SNS→LambdaSQS buffer+DLQ.
Hard-coded accountConditions.
Poison JSONValidate+DLQ.
Public queuePrincipal restrict.
Filter नाहीFilter policy.
Double emailIdempotency.
Alarm नाहीDepth alarm.

11. Troubleshooting checklist

  1. Invisible → visibility/workers.
  2. Publish deny → policy/IAM.
  3. Duplicates → idempotent.
  4. FIFO throttle → groups.
  5. Long poll 20s.
  6. 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।

घरी करून बघा

  1. Food order SNS→3 SQS sketch.
  2. DynamoDB idempotent email mark.
  3. 3 CloudWatch alarms.

थोडक्यात सांगायचं तर

  1. SQS=work; SNS=fan-out.
  2. DLQ+visibility+idempotent.
  3. SNS→SQS→worker.
  4. FIFO = order matters.

उजळणी, मुलाखत आणि तुलना cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: SQS आणि SNS म्हणजे काय?. Direct calls = slow/down वर break. SQS=queue; SNS=pub/sub fan-out. Topic/queue → subscribe → publish → receive+delete. Order → SNS → two SQS workers.
उजळणी card: SQS आणि SNS म्हणजे काय? · PNG download करा · Card page उघडा
उजळणी card: Visibility timeout आणि DLQ. Crash = lose किंवा infinite retry. Visibility + maxReceive → DLQ. Timeout≥process; alarm DLQ; redrive. Bad JSON → DLQ after 3.
उजळणी card: Visibility timeout आणि DLQ · PNG download करा · Card page उघडा
तुलना: Amazon SQS vs Amazon SNS. Amazon SQS: Pull queue + backlog. Amazon SNS: अनेक subscribers कडे push.
तुलना: Amazon SQS vs Amazon SNS · PNG download करा · Card page उघडा
तुलना: Standard queue vs FIFO queue. Standard queue: अत्यधिक throughput; best-effort order. FIFO queue: Group मध्ये order + exactly-once.
तुलना: Standard queue vs FIFO queue · PNG download करा · Card page उघडा
मुलाखत card: SQS vs SNS एका ओळीत?. SQS=queue; SNS=fan-out. SNS → many SQS. One publish; two queues.
मुलाखत card: SQS vs SNS एका ओळीत? · PNG download करा · Card page उघडा
मुलाखत card: Visibility timeout म्हणजे?. Received message hidden temporarily. ≥ process time; extend if needed. Timeout too low → dupes.
मुलाखत card: Visibility timeout म्हणजे? · PNG download करा · Card page उघडा
मुलाखत card: DLQ का?. Poison → DLQ after max receives. Alarm; fix; redrive. 3 fails → DLQ.
मुलाखत card: DLQ का? · PNG download करा · Card page उघडा
मुलाखत card: FIFO कधी?. Order + dedupe in a group. Standard = throughput. Ledger → FIFO group.
मुलाखत card: FIFO कधी? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.

सराव Tasks

या scenario बद्दल

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.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Queue URL

का: Send आधी URL.

काय करायचं: mapleleafbooks-orders URL.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Topics

का: Fan-out.

काय करायचं: SNS topics.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं FIFO group

का: GroupId.

काय करायचं: FIFO GroupId तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Delete ack

का: Ack.

काय करायचं: Success नंतर delete तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Queue attrs

का: Visibility/DLQ.

काय करायचं: attrs All on orders queue.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Send

का: Produce.

काय करायचं: orders queue send hello.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Receive

का: Consume.

काय करायचं: orders receive.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Topic attrs

का: Topic inspect.

काय करायचं: events topic attrs.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Publish one

का: Publisher LP.

काय करायचं: events Publish.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

मध्यम DLQ JSON

का: DLQ नाव.

काय करायचं: dlq_name orders-dlq.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

मध्यम SNS→SQS

का: Buffer.

काय करायचं: SNS→SQS→Lambda तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Long poll

का: Empty cut.

काय करायचं: Long poll seconds?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Delete

का: Success ack.

काय करायचं: orders delete receipt abc.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड SendMessage one

का: Producer LP.

काय करायचं: orders queue SendMessage.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड Visibility JSON

का: Process time.

काय करायचं: VisibilityTimeout 60.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.