Serverless वर Distributed Transactions साठी Saga Pattern
दोन दुकाने एक ऑर्डर शेअर करतात: inventory आणि payment. Payment झाले पण inventory fail — charge undo करावा लागतो. हा undo नृत्य = saga. Serverless वर सहसा Step Functions.
या chapter मध्ये तुम्ही काय शिकाल
- Saga vs 2PC
- Happy + compensate
- Orch vs choreo saga
- Idempotent compensate
- Link projects
1. रोजचे उदाहरण: दोन counters वर trip booking
Fatima (Casablanca) train (MAD 420) नंतर hotel. Hotel full → train cancel = compensation. Global lock नाही. Payment Lambda + stock Lambda तसेच.
order workflow project मध्ये steps; DynamoDB transactions मध्ये atomic multi-item. Cross-service = saga.
2. Saga का?
हे का लागतं?
Cross-service ACID नाही. Locks = Lambda वेळ/पैसे. Saga = local commit + compensate.
हे काय आहे?
Saga = local tx + compensate. Orchestration = SFN. Choreography = events.
3. Vertical diagram
4. Orch vs choreo saga
| Style | Pros | Cons |
|---|---|---|
| SFN | History, timeout, catch | Central def |
| Events | Loose | Flow unclear; loops |
| Hybrid | Money SFN; notify events | don models |
Ravindra Bagale's Tip
Money/inventory = SFN. Marketing email = events.
5. How: payment+stock saga
कसं करायचं (step by step)
- AWS names nako - reserve/charge/ship.
- pratyek undo.
- orderId+step keys.
- SFN Catch chain.
- Completed fakt shevati.
- Failed + compensate alarms.
6. Commands + meaning
State machines yadi
aws stepfunctions list-state-machines --region ap-south-1 \
--query 'stateMachines[].{N:name,A:stateMachineArn}' --output table
अर्थ: Mumbai madhye saga machine ahe ka te paha.
Failed execution
aws stepfunctions get-execution-history --region ap-south-1 \
--execution-arn "$EXEC_ARN" --reverse-order --max-items 20 \
--query 'events[?type==`TaskFailed` || type==`ExecutionFailed`]'
अर्थ: kuthla Task fail + error - compensate debug ithun.
Execution start
aws stepfunctions start-execution --region ap-south-1 \
--state-machine-arn "$SM_ARN" \
--name "ord-7841-$(date +%s)" \
--input '{"orderId":"ord-7841","amountINR":2499,"sku":"MOMO-12"}'
अर्थ: Name unique; same name = juni execution.
Stop execution
aws stepfunctions stop-execution --region ap-south-1 \
--execution-arn "$EXEC_ARN" --error "ManualStop" --cause "lab cleanup"
अर्थ: Lab madhye loop stop; prod = alarm + runbook.
7. Compensation rules
- Success chya reverse kram.
- Compensate idempotent.
- Compensate fail then human queue.
- n zhalelya step cha undo nako.
- orderId correlation.
- Same currency refund.
8. kadhi saga nako
| Smell | Better | ka |
|---|---|---|
| Single table | TransactWrite | ek request ACID |
| ek Lambda | In-process | Boundary nahi |
| Read fan-out | SNS/SQS | Undo nahi |
9. Industries
- Fintech Lagos.
- Ecommerce Pune.
- Travel Sofia.
- Healthcare SG.
- Logistics Amman.
10. Lab: paper then SFN
11. Lab - sketch nantar state machine
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Paper: 999 INR course - 3+3 steps.
- Order-workflow SM ughada.
- Test execution + Graph.
- Fail path + history.
- tumchya compensations liha.
Cleanup (billing थांबवा)
- Loops thambava.
- Lab SM delete.
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 |
|---|---|
| Task timeout | Timeout/VPC tapasa. |
| Double refund | Idempotency + ledger. |
| Wrong compensate | Catch scope. |
| Name exists | Unique name. |
| Event loop | Version / SFN. |
| Ship after refund | Status gate. |
| Lost order | orderId in alarm. |
| Currency mix | Same currency. |
| Payload big | S3 pointer. |
15. FAQ
प्र. Saga=2PC?
nahi - local+undo.
प्र. ek table?
TransactWrite.
प्र. Express?
Short high-volume.
प्र. Async compensate?
Status track.
प्र. DDB tx?
Step aat; saga baher.
प्र. Project?
order-workflow.
16. Interview Q&A (Beginner / Mid / Senior + MNC)
प्र. Beginner saga
Local tx + compensate.
प्र. Compensate
Undo.
प्र. Mid orch
SFN vs events.
प्र. Idempotent refund
One credit.
प्र. Senior compensate fail
Human + no infinite.
प्र. MNC audit
History+ledger.
17. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Two counters, one trip: if hotel fails, cancel the train. That cancel is the saga.
Ravindra Bagale's Tip (MR)
don counters: hotel fail then train cancel = saga.
Tip (HI)
दो काउंटर, एक यात्रा: होटल फेल तो ट्रेन cancel — यही saga।
घरी करून बघा
- 3+3 steps liha.
- SFN vs SNS mark.
थोडक्यात सांगायचं तर
- गोष्टी पासून सुरू, मग 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: saga pattern गोष्ट.
- 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. Diego course (BRL)
- BRL 189.
- Reserve OK.
- Charge fail.
- Release; no welcome.
- No orphan seat.
32. Anti-patterns
- Sleeps nako - SFN wait.
- Compensate != forward.
- Least privilege refund.
- orderId in logs.
33. Metrics
- ExecutionsFailed.
- Compensate Errors.
- RefundLatencyMs.
- Human DLQ.
उजळणी, मुलाखत आणि तुलना 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
सोपं Saga
का: Idea.
काय करायचं: Saga तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Comp
का: Undo.
काय करायचं: Undo तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं SFN
का: Fit.
काय करायचं: SFN saga तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं 2PC
का: Anti.
काय करायचं: Avoid 2PC तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं List-sfn
का: CLI.
काय करायचं: list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Parts
का: Map.
काय करायचं: forward/undo.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
सोपं Money
का: Fit.
काय करायचं: Money saga तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Choreo
का: Style.
काय करायचं: Events तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Idem
का: Safe.
काय करायचं: Idempotent तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Order
का: Flow.
काय करायचं: Reserve charge ship तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Catch
का: SFN.
काय करायचं: Catch compensate तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Styles
का: Map.
काय करायचं: orchestrated/choreographed.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड State
का: Ops.
काय करायचं: Persist state तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Timeout
का: Bound.
काय करायचं: Timeouts तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Partial
का: Reality.
काय करायचं: Partial → comps तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Lab
का: Hygiene.
काय करायचं: Delete lab तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.