Lambda आणि DynamoDB ने CQRS आणि Event Sourcing Patterns
क्रिकेट स्कोरर प्रत्येक चेंडू वहीत लिहितो (event log). स्कोअरबोर्ड = projection. CQRS = write commands वेगळे, read models वेगळे. Event sourcing = latest row नव्हे — events. AWS: DynamoDB writes + Streams → Lambda projections.
या chapter मध्ये तुम्ही काय शिकाल
- CQRS scoreboard
- Command vs query
- Event sourcing when
- Streams → projection
- Link CDC/ecom
1. रोजचे उदाहरण: वही vs स्कोअरबोर्ड
Kenji (Osaka) notebook append-only; board = projection. Luis (Mexico City, MXN) OrderPlaced events; read table = list screen.
Hands-on: CDC Streams project, ecommerce cart project; depth DynamoDB Streams chapter.
2. CQRS का?
हे का लागतं?
एकच table write+dashboard = scans/contention. Spiky reads writes block करू नयेत.
हे काय आहे?
CQRS = commands vs queries. Event sourcing = events = source of truth.
3. Vertical diagram
4. CQRS without full ES
CQRS light: orders + inbox projection. Full ES: प्रत्येक event कायम — शक्तिशाली आणि जड.
| Approach | ठेवा | टाळा |
|---|---|---|
| CQRS light | Read वेगळे | दोन models नको |
| Full ES | Audit/time-travel | Simple CRUD |
5. How: projection
कसं करायचं (step by step)
- Commands नाम.
- Events define.
- Invariants write side.
- Projection idempotent.
- Query ≠ command.
- Rebuild plan.
6. Commands + meaning
Stream describe
aws dynamodb describe-table --region ap-south-1 --table-name orders-write \
--query 'Table.StreamSpecification'
अर्थ: Projection साठी stream view confirm.
ESM list
aws lambda list-event-source-mappings --region ap-south-1 \
--query 'EventSourceMappings[?contains(EventSourceArn, `dynamodb`)].{F:FunctionArn,S:State,U:UUID}'
अर्थ: कुठली Lambda कुठल्या stream वर.
Logs filter
aws logs filter-log-events --region ap-south-1 \
--log-group-name /aws/lambda/orders-projector \
--filter-pattern 'ERROR' --limit 20
अर्थ: Projection fail = stale reads.
Read table count
aws dynamodb scan --region ap-south-1 --table-name orders-inbox \
--select COUNT --max-items 1
अर्थ: Lab only; prod = metrics.
7. Industries
- Fintech ledger.
- Ecommerce dashboard.
- EdTech streaks.
- Media moderation.
- SaaS seats.
8. Lab
9. Lab - CQRS sketch
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Paper: loan command/events/read.
- StreamSpecification.
- Iterator age alarm.
- Rebuild plan.
Cleanup (billing थांबवा)
- ESM disable.
- Lab cleanup.
10. एकाच 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.
11. 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.
12. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| Stale read | Iterator age. |
| Double apply | eventId. |
| Loop | Guard. |
| Wrong table | Read route. |
| Need old | OLD images. |
| OS mapping | Version. |
| Event storm | CQRS light. |
| PII forever | Minimize. |
| No currency | currency field. |
13. FAQ
प्र. CQRS=ES?
नाही.
प्र. Streams=ES?
Change feed.
प्र. UI consistent?
Read-your-writes.
प्र. CDC?
cdc project.
प्र. Avoid?
Simple CRUD.
14. Interview Q&A (Beginner / Mid / Senior + MNC)
प्र. Beginner CQRS
Write/read split.
प्र. Projection
Read from events.
प्र. Mid idempotent
Same state.
प्र. Full ES
Audit/rebuild.
प्र. Senior poison
DLQ+replay.
प्र. MNC
Immutable+retention.
15. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Notebook of balls rebuilds any scoreboard. Events rebuild read models.
Ravindra Bagale's Tip (MR)
चेंडू वही → scoreboard. Events → read models.
Tip (HI)
बॉल की कॉपी से स्कोअरबोर्ड: events से read models।
घरी करून बघा
- 3 events.
- Write vs read.
थोडक्यात सांगायचं तर
- गोष्टी पासून सुरू, मग services.
- Existing chapters link — labs copy नको.
- Failure साठी design.
- Measure → मग पैसे.
16. 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.
17. 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.
18. अजून 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.
19. 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 |
20. Practice: मोठ्याने explain
- 60s: CQRS आणि event sourcing गोष्ट.
- 60s: sync vs async checkout.
- 60s: Lambda नको कधी.
- 60s: DLQ + idempotency.
- Record ×2.
21. Safe lab hygiene
- Tag owner+expiry.
- Budget alarm आधी.
- Read-only first.
- Cleanup.
- No secrets in env/screenshots.
- No provisioned on hello.
22. या chapter च्या links
- Compute: Lambda.
- HTTP: API Gateway.
- Data: DynamoDB.
- Messaging: SQS/SNS.
- Events: EventBridge.
- Workflows: Step Functions.
- build-* projects link.
23. Myths
| Myth | खरं |
|---|---|
| Servers नाहीत | Servers आहेत; manage नको |
| नेहमी स्वस्त | Steady वर EC2 |
| No Ops | IAM/data/alarms |
| एक Lambda | Bounded contexts |
| Queues optional | Load leveler |
24. 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.
25. Regional notes (ap-south-1)
- Labs Mumbai.
- Feature availability.
- Data residency.
- Latency India.
26. 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 सोपा.
27. Pre-mortems
- Double charge headline.
- DLQ drain plan.
- Cognito outage mode.
- Runbook.
28. Currency / locale
Currencies आणि names rotate करा — global mental model.
29. Mei appointments (SGD)
- BookSlot event.
- Projector.
- TV = read.
- Cancel projection.
30. Anti-patterns
- Fat events.
- Always sync proj.
- No replay.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








अजून cards: Ravi Sir's Cards.
सराव Tasks
Vidarbha Cotton Mills हा नागपूर मधला वस्त्रोद्योग व्यवसाय आहे. Ganesh Wankhede त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं CQRS
का: Idea.
काय करायचं: Split तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं ES
का: Idea.
काय करायचं: Events store तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Cmd
का: Write.
काय करायचं: Commands तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Query
का: Read.
काय करायचं: Projections तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं List-tables
का: CLI.
काय करायचं: list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Sides
का: Map.
काय करायचं: write/read.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
सोपं Audit
का: Why.
काय करायचं: Audit तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Stream
का: Pipe.
काय करायचं: Streams तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Replay
का: Rebuild.
काय करायचं: Replay तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Lag
का: Tradeoff.
काय करायचं: Eventual तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Idem
का: Safe.
काय करायचं: Idempotent तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Pipe
का: Flow.
काय करायचं: source/target.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड Snap
का: Perf.
काय करायचं: Snapshots तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Schema
का: Evolve.
काय करायचं: Version schemas तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Scope
का: Fit.
काय करायचं: Not every CRUD तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Lab
का: Hygiene.
काय करायचं: Delete lab तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.