Serverless वर Queue-Based Load Leveling, DLQ, Retries आणि Idempotency
तिकीट खिडकी जलद; किचन steady. मध्ये ticket rail = queue. SQS burst थामवते. DLQ, retries, visibility timeout, idempotency — चार सुरक्षित async स्तंभ.
या chapter मध्ये तुम्ही काय शिकाल
- Ticket-rail story
- Visibility vs Lambda timeout
- DLQ design
- Idempotent consumers
- Link async-order
1. रोजचे: ticket rail
Sofia (EUR) cafe: tour bus = 40 orders. Ticket rail = SQS. API 202; workers steady.
Hands-on: async order project. Depth: SQS/SNS.
2. Load leveling का?
हे का लागतं?
Queue नसेल तर spike → throttle → angry retries. Queue = lag जो measurable आहे.
हे काय आहे?
Load leveling + DLQ + Idempotency.
3. Vertical path
4. Visibility vs Lambda timeout
| Setting | Rule | |
|---|---|---|
| Lambda timeout | p99 पेक्षा थोडं जास्त | |
| Visibility | Greater than Lambda timeout × batch worry factor (often ≥ 6× timeout for safety margin in labs, tune in prod) | Lambda timeout पेक्षा जास्त — tune |
| maxReceiveCount | 3–5 | |
| batch size | 1–10 पासून |
Ravindra Bagale's Tip
Visibility लवकर संपली तर duplicate. Idempotency वाचवते; timeouts pain कमी.
5. How: intake + worker
कसं करायचं (step by step)
- Queue+DLQ redrive.
- Intake 202.
- Worker idempotent.
- Partial batch failure.
- Alarms.
- Burst test.
Create + redrive
aws sqs create-queue --queue-name sofia-orders-dlq --region ap-south-1
# then create main with RedrivePolicy pointing at DLQ ARN, maxReceiveCount=5
अर्थ: आधी DLQ ARN.
SendMessage
aws sqs send-message --queue-url $Q --region ap-south-1 \
--message-body '{"orderId":"o-7","currency":"EUR","total":12.5}'
अर्थ: तेच orderId दोनदा = एक row.
6. Idempotency
Python conditional
# Concept: PutItem with ConditionExpression attribute_not_exists(orderId)
# First write wins; duplicate message returns ConditionalCheckFailed — treat as success
print("first -> wrote")
print("dup -> already exists -> ok")
अर्थ: at-least-once → exactly-once effect.
Node key
const crypto = require('crypto');
const key = (o) => crypto.createHash('sha256').update(JSON.stringify(o)).digest('hex').slice(0,16);
console.log(key({orderId:'o-7',total:12.5}));
अर्थ: stable key = dedupe.
7. Retry taxonomy
| Layer | काय | तुम्ही |
|---|---|---|
| Client | HTTP | Backoff |
| SQS | Visibility नंतर | Timeouts |
| Lambda async | Destinations | SQS prefer |
| SFN | Per-state | Backoff |
8. Partial batch failure
Batch मध्ये एक poison ≠ सगळं rewind. Item-level failure report.
9. Lab
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Timeout numbers.
- Redrive path.
- Optional.
- Alarm sketch.
- Cleanup.
Cleanup (billing थांबवा)
- Main then DLQ.
- Function+logs.
10. FIFO vs Standard
- Standard: throughput.
- FIFO: order.
- Aisha: FIFO ledger; Standard email.
Attributes
aws sqs get-queue-attributes --queue-url $Q --attribute-names All --region ap-south-1 --query 'Attributes.{V:VisibilityTimeout,R:RedrivePolicy,D:DelaySeconds}'
अर्थ: Load test आधी confirm.
11. Backpressure
Queue = shock absorber; infinite disk नव्हे. API throttle/shed.
12. एकाच pattern — वेगवेगळ्या industries
- Fintech (Aisha, Lagos): payment webhooks → SQS → Lambda.
- Ecommerce (Rohan, Pune): checkout API; inventory SNS fan-out.
- Healthcare (Mei, Singapore): SNS SMS; PHI + fine-grained IAM.
- EdTech (Diego, São Paulo): EventBridge nightly cleanup.
- Logistics (Fatima, Casablanca): EventBridge + saga.
- Media (Kenji, Osaka): S3 → Lambda thumbs + fan-out.
- SaaS (Priya, Bengaluru): Cognito + per-tenant partition.
- Gov (Omar, Amman): strangler fig per form route.
13. Troubleshooting checklist
- Region confirm करा.
- CloudWatch Logs + request id.
- Execution role permissions.
- DLQ + oldest message age.
- curl -v + CORS.
- SFN event history.
- Linked chapter पुन्हा वाचा.
- Cost: concurrency/retries.
14. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| Visibility low | Raise. |
| No DLQ | Add. |
| Early delete | Write first. |
| Ignore age | Alarm. |
| Huge batch | Partial+smaller. |
| Queue as DB | DDB/S3. |
| Weak key | Intent in key. |
| Forever DLQ | Redrive SLA. |
| Needless FIFO | Standard. |
| No intake alarm | Alarm. |
15. FAQ
प्र. Only SQS?
Kinesis/MSK too.
प्र. Exactly-once?
Idempotent effect.
प्र. ESM?
Prefer ESM.
प्र. Size?
256KB; else S3.
प्र. Project?
build-async-order.
प्र. Redrive?
DLQ→main.
16. Interview Q&A (Beginner / Mid / Senior + MNC)
प्र. Beginner queue
Absorb spikes.
प्र. DLQ
Failed often.
प्र. Mid visibility
Visibility > timeout.
प्र. Idempotency
One effect.
प्र. Senior batch
Per-item.
प्र. MNC poison
Alarm+fix+redrive.
17. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Tickets on a rail: 202 at the window, steady cooks, DLQ for burnt tickets, idempotent recipes.
Ravindra Bagale's Tip (MR)
Ticket rail: खिडकी 202, steady cook, DLQ, idempotent.
Tip (HI)
टिकट रेल: खिड़की 202, स्थिर कुक, DLQ, idempotent रेसिपी।
घरी करून बघा
- Timeouts लिहा.
- Idempotency fields.
थोडक्यात सांगायचं तर
- गोष्टी पासून सुरू, मग services.
- Existing chapters link — labs copy नको.
- Failure साठी design.
- Measure → मग पैसे.
18. Architecture decision checklist
- User journey 5 bullets, no AWS names.
- Sync vs async mark.
- Failure mode.
- Idempotency key.
- Data from access patterns.
- Cost 1x and 10x.
- Quotas ap-south-1.
- Auth decision.
- On-call + alarm.
- Deep chapter link.
- मग console/IaC.
19. Copy-paste quick commands
# Region and identity
aws configure get region
aws sts get-caller-identity
# Lambda landscape
aws lambda list-functions --region ap-south-1 --max-items 20 \
--query 'Functions[].{N:FunctionName,R:Runtime,T:Timeout,M:MemorySize}' --output table
aws lambda get-account-settings --region ap-south-1
# API Gateway (HTTP APIs)
aws apigatewayv2 get-apis --region ap-south-1 --query 'Items[].{N:Name,Id:ApiId,Ep:ProtocolType}' --output table
# Queues and topics
aws sqs list-queues --region ap-south-1
aws sns list-topics --region ap-south-1 --query 'Topics[].TopicArn'
# Event buses and state machines
aws events list-event-buses --region ap-south-1
aws stepfunctions list-state-machines --region ap-south-1 --query 'stateMachines[].name'
# DynamoDB tables (names only)
aws dynamodb list-tables --region ap-south-1
Sandbox + read-only IAM.
20. अजून industry आणि stack stories
- Fintech Lagos: webhook → SQS → idempotent ledger.
- Ecommerce Pune: throttle + fan-out.
- Healthcare SG: SNS + PHI IAM.
- EdTech: EventBridge cleanup.
- Logistics: bus + saga.
- Media: avoid recursive S3.
- SaaS: tenant partition.
- Gov: strangler peel.
- Startup: Function URL → HTTP API.
- Retail: FIFO vs Standard.
- Python: thin handlers.
- Node: async/await.
- Java: SnapStart.
- .NET: package size.
- Go: static binary.
- PHP: hybrid.
21. Glossary
| Term | अर्थ |
|---|---|
| Cold start | पहिल्या invoke ची init |
| Idempotency | दोनदा = तोच effect |
| DLQ | Fail झालेले messages |
| Choreography | Events; conductor नाही |
| Orchestration | SFN central |
| Fan-out | एक → अनेक |
| Fan-in | अनेक → join |
| Strangler fig | Monolith peel |
| Saga | Steps + compensate |
| Provisioned concurrency | Warm N; pay |
22. Practice: मोठ्याने explain
- 60s: queue load leveling गोष्ट.
- 60s: sync vs async checkout.
- 60s: Lambda नको कधी.
- 60s: DLQ + idempotency.
- Record ×2.
23. Safe lab hygiene
- Tag owner+expiry.
- Budget alarm आधी.
- Read-only first.
- Cleanup.
- No secrets in env/screenshots.
- No provisioned on hello.
24. या chapter च्या links
- Compute: Lambda.
- HTTP: API Gateway.
- Data: DynamoDB.
- Messaging: SQS/SNS.
- Events: EventBridge.
- Workflows: Step Functions.
- build-* projects link.
25. Myths
| Myth | खरं |
|---|---|
| Servers नाहीत | Servers आहेत; manage नको |
| नेहमी स्वस्त | Steady वर EC2 |
| No Ops | IAM/data/alarms |
| एक Lambda | Bounded contexts |
| Queues optional | Load leveler |
26. Serverless error budget
Checkout error budget 0.1% असेल तर aggressive retries email duplicates देऊन budget जाळू शकतात. Money SLO ≠ notify SLO.
- दोन SLOs.
- Money retries bounded.
- Notify best-effort.
- Money page; notify ticket.
27. Regional notes (ap-south-1)
- Labs Mumbai.
- Feature availability.
- Data residency.
- Latency India.
28. Naming conventions
# Suggested prefixes
# Lambda: pay-intake-prod, pay-worker-prod
# SQS: pay-orders.fifo / pay-orders-dlq
# SNS: pay-order-events
# EB bus: pay.domain
# SFN: pay-refund-saga
# DDB: pay-orders-prod
env + domain नावात ठेवा. CloudWatch grep सोपा.
29. Pre-mortems
- Double charge headline.
- DLQ drain plan.
- Cognito outage mode.
- Runbook.
30. Currency / locale
Currencies आणि names rotate करा — global mental model.
31. Failure timeline
- Bad JSON throw.
- Receive +1.
- To DLQ.
- Human inspect.
- Fix+redrive.
32. Metrics
- Backlog.
- Age/SLA.
- Sent vs Deleted.
- Concurrency.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








अजून cards: Ravi Sir's Cards.
सराव Tasks
Milan Furniture हा मिलान मधला फर्निचर व्यवसाय आहे. Giulia Rossi त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं Queue
का: Metaphor.
काय करायचं: Queue metaphor तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Level
का: Effect.
काय करायचं: Measurable lag तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Visibility
का: Timing.
काय करायचं: Visibility greater तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं DLQ
का: Safe.
काय करायचं: Failed messages तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं List-queues
का: CLI.
काय करायचं: list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Knobs
का: Config.
काय करायचं: visibility/max_receive.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
सोपं Batch
का: Cost.
काय करायचं: Batch cost तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम MRC
का: Config.
काय करायचं: Then DLQ तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Idem
का: Write.
काय करायचं: Conditional put तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम PBF
का: Batch.
काय करायचं: Per-item fail तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Age
का: SLA.
काय करायचं: Lagging SLA तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Idem
का: Write.
काय करायचं: condition/key.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड 202
का: API.
काय करायचं: 202 Accepted तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Not disk
का: Anti.
काय करायचं: Not infinite disk तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Alarm
का: Ops.
काय करायचं: Alarm age+DLQ तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Lab
का: Hygiene.
काय करायचं: Delete lab तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.