Ravindra BagaleCourses & study guides English

Project: SNS, SQS, Lambda आणि DynamoDB ने Order Fan-Out बनवा (Source Code)

एक Swiggy order → email आणि inventory एकत्र. SNS → दोन SQS → दोन Lambdas → DynamoDB.

या chapter मध्ये तुम्ही काय शिकाल

  • SNS → 2 SQS
  • Publisher API
  • दोन workers
  • Cleanup

1. रोजचं उदाहरण

हे का लागतं?

Email crash झाले तरी inventory चालावी. वेगळ्या queues = fan-out.

हे काय आहे?

POST → publisher → SNS → 2 SQS → 2 workers → DynamoDB.

Fan-outAPIPOSTPublisherSNSSNS2 SQSLambdasDynamoDB
Queues topic ला subscribe.

Download: order-fanout.zip

2. Lab

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

A. SNS + SQS + table

  1. SNS topic.
  2. 2 queues subscribe.
  3. Table PK pk.

B. Workers + publisher

  1. दोन्ही workers + triggers.
  2. Publisher + POST /orders.
curl -s -X POST "$API_BASE/orders" -H 'content-type: application/json' \
  -d '{"sku":"TEE-RED","qty":1}'
# DynamoDB should show EMAIL#... and INV#... rows

Cleanup

  1. सर्व delete.

3. Interview

प्र. API मधून दोन publish का नये?

SNS subscriptions वाढवता येतात.

प्र. Wrapper?

Message JSON parse.

प्र. Failure isolation?

एक queue दुसऱ्याला अडकवत नाही.

प्र. Filter policies?

attributes ने route.

प्र. Cleanup?

Topic, queues, Lambdas, table.

घरी करून बघा

  1. तिसरी analytics queue.
  2. VIP attributes.

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

  1. Fan-out = SNS → many SQS.
  2. एक publish, अनेक subscribers.
  3. Failure isolate.
  4. Cleanup.

सराव Tasks

या scenario बद्दल

Hyderabad Biryani Hub हा हैदराबाद मधला क्लाउड किचन व्यवसाय आहे. Syed Imran त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

का: या Region मध्ये कोणते functions आहेत ते पाहा.

काय करायचं: ap-south-2 मधले Lambda functions दाखवा.

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

मध्यम Function invoke करा

का: Invoke function आत्ता चालवतो व उत्तर file मध्ये ठेवतो.

काय करायचं: hydbiryani-orders-fn invoke करा व response out.json मध्ये ठेवा.

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

मध्यम Lambda role साठी trust policy

का: Trust policy role कोण घेऊ शकतो ते सांगते.

काय करायचं: lambda.amazonaws.com ला role assume करू देणारी trust policy लिहा.

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

मध्यम Item टाका

का: DynamoDB JSON प्रत्येक value चा type दाखवतो: S string, N number.

काय करायचं: hydbiryani-orders मध्ये orderId "o-101" (string) व amount 2500 (number) असलेला item टाका.

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

मध्यम Timeout व memory बदला

का: जास्त memory म्हणजे जास्त CPU; timeout अडकलेले runs थांबवतो.

काय करायचं: hydbiryani-orders-fn चा timeout 30 seconds व memory 512 MB करा.

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

अवघड SQS queue Lambda ला जोडा

का: Event source mapping मुळे Lambda queue poll करून batches मध्ये messages process करतो.

काय करायचं: Queue arn:aws:sqs:ap-south-2:130300927383:hydbiryani-orders पासून hydbiryani-orders-fn ला batch size 10 सह event source mapping बनवा.

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

अवघड Lambda function बनवा

का: Lambda ला code zip, runtime, handler नाव व execution role लागतो.

काय करायचं: hydbiryani-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::130300927383:role/lambda-basic, code function.zip मध्ये.

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

अवघड Environment variables द्या

का: Table नावांसारख्या settings code बाहेर ठेवा.

काय करायचं: hydbiryani-orders-fn वर environment variable TABLE=hydbiryani-orders द्या.

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

अवघड JSON payload सह invoke करा

का: CLI v2 मध्ये raw JSON साठी --cli-binary-format raw-in-base64-out लागतो.

काय करायचं: hydbiryani-orders-fn ला payload {"orderId":"o-101"} (raw JSON) सह invoke करा व उत्तर out.json मध्ये.

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

अवघड Lambda GB-seconds

का: Lambda memory × time bill करतो.

काय करायचं: 1,000,000 invocations, 512 MB, प्रत्येकी 200 ms. किती GB-seconds?

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

अवघड Read capacity units

का: Provisioned tables ला योग्य RCU लागतो.

काय करायचं: 6 KB items चे strongly consistent reads, 10/sec. किती RCU?

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

अवघड S3 ला function call करू द्या

का: S3 function invoke करण्याआधी resource-based permission लागते.

काय करायचं: hydbiryani-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::hydbiryani-uploads कडून lambda:InvokeFunction करावं.

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

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

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

उजळणी card: SNS+SQS ने order fan-out. एक order → email आणि inventory एकत्र, teams couple न करता. API → Lambda → SNS → 2× SQS → 2× Lambda → DynamoDB. Topic + 2 queues + subscriptions + workers + POST. एक POST → दोन worker rows.
उजळणी card: SNS+SQS ने order fan-out · PNG download करा · Card page उघडा
उजळणी card: SNS नंतर SQS का?. API मधून दोन Lambda = failures एकत्र + client block. SNS = fan-out. SQS = प्रत्येक consumer चा buffer. Queue subscribe; SNS permission; event source mapping. Email pause → inventory चालतो; email पुन्हा → backlog संपतो.
उजळणी card: SNS नंतर SQS का? · PNG download करा · Card page उघडा
उजळणी card: Failure isolation. Email throw झाला तरी inventory हवं. एका Lambda मध्ये isolation कमकुवत. वेगळ्या queues/Lambdas = isolation. DLQ per queue. maxReceiveCount 3 → DLQ; key orderId+type. Poison → email-DLQ; inventory तरी reserved.
उजळणी card: Failure isolation · PNG download करा · Card page उघडा
तुलना: Amazon SNS vs Amazon SQS. Amazon SNS: Topic एक event अनेक subscribers ना. Amazon SQS: Queue एका consumer group साठी buffer.
तुलना: Amazon SNS vs Amazon SQS · PNG download करा · Card page उघडा
मुलाखत card: API मधून दोन Lambda का invoke करू नये?. Client दोन्हींची वाट; एक fail = सगळं; scaling couple. SNS+SQS decouple + per-queue isolation. एक Publish; दोन queues → दोन Lambdas.
मुलाखत card: API मधून दोन Lambda का invoke करू नये? · PNG download करा · Card page उघडा
मुलाखत card: Email vs inventory failures कशी isolate कराल?. वेगळ्या queues, Lambdas, roles, DLQs. Poison email → inventory block नाही. email-DLQ; inventory स्वतंत्र.
मुलाखत card: Email vs inventory failures कशी isolate कराल? · PNG download करा · Card page उघडा

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