Ravindra BagaleCourses & study guides English Track your progress

Strangler Fig Pattern: Monolith मधून Serverless कडे Step by Step

वटवृक्ष जुना झाड घेरतो. Software मध्ये monolith मधून एक route वेळेस API Gateway+Lambda कडे peel. एकच URL. Big-bang rewrite weekend नको.

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

  • Strangler story
  • One route peel
  • Coexist
  • Per-route rollback
  • When not

1. रोजचे उदाहरण: बस तिकीट खिडकी

Omar (Amman, JOD) gov portal. एक URL. पहिले /forms/birth-cert = Lambda; बाकी Tomcat. Fail तर तोच path परत. Strangler fig.

Edge: API Gateway. Greenfield: REST API project, notes app — strangler = coexist.

2. Strangle का?

हे का लागतं?

Big-bang slip. Risk एका cutover मध्ये. Strangle = sprint-by-sprint proof; revenue चालू.

हे काय आहे?

Strangler fig = facade → selected paths to Lambda; जुने paths नंतर retire.

3. Vertical diagram

Client -> Facade -> Monolith OR LambdaRoute table branch
Dual-write काळजी
Client (same hostname) Facade: API Gateway / ALBroute table / weighted target Legacy monolithTomcat / Django / .NET New Lambda+ DynamoDB / HTTP Shared data? careful sync plan Peel routes until monolith shrinks
Strangler: one facade, two backends, हळूहळू peel.

4. How: एक route

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

  1. Traffic+pain inventory.
  2. Leaf route first.
  3. Facade.
  4. Contract tests.
  5. Canary/shadow.
  6. 100% + rollback.
  7. Delete late.

5. Commands + meaning

HTTP API routes

aws apigatewayv2 get-routes --region ap-south-1 --api-id "$API_ID" \
  --query 'Items[].{R:RouteKey,T:Target}' --output table

अर्थ: कुठले paths Lambda vs proxy.

ALB rules

aws elbv2 describe-rules --region ap-south-1 --listener-arn "$LISTENER_ARN" \
  --query 'Rules[].{P:Priority,C:Conditions[0].PathPatternConfig.Values[0]}' --output table

अर्थ: Path rules = peel map.

Canary errors

aws cloudwatch get-metric-statistics --region ap-south-1 \
  --namespace AWS/Lambda --metric-name Errors --dimensions Name=FunctionName,Value=birth-cert-api \
  --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%S) --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \
  --period 300 --statistics Sum

अर्थ: Canary Errors वाढले तर flip back.

Access log check

# On monolith host (example): count hits to migrated path last hour
sudo grep '/forms/birth-cert' /var/log/nginx/access.log | tail -20

अर्थ: 100% नंतर monolith quiet.

6. Data coexist

StrategyकधीRisk
Read old DBEarlyCoupling
Dual writeShort windowPartial fail
CDCNew readsLag
Freeze+cutTinyFreeze

Ravindra Bagale's Tip

आधी old DB read. Dual-write = idempotent keys.

7. कधी नको

  • आधी DNS/domain.
  • Contract tests नसतील तर थांबा.
  • Audit flag.
  • आधी seam.

8. Industries

  • Gov forms.
  • Bank statements.
  • Retail store-finder.
  • EdTech PDF.
  • SaaS webhooks.

9. Lab

10. Lab - peel plan

Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.

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

  1. Leaf vs core mark.
  2. Facade choice.
  3. Metrics.
  4. Rollback 5 bullets.
  5. Optional lab API.

Cleanup (billing थांबवा)

  1. Cleanup.
  2. Alarms.

11. एकाच 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.

12. Troubleshooting checklist

  1. Region confirm करा.
  2. CloudWatch Logs + request id.
  3. Execution role permissions.
  4. DLQ + oldest message age.
  5. curl -v + CORS.
  6. SFN event history.
  7. Linked chapter पुन्हा वाचा.
  8. Cost: concurrency/retries.

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

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

Error / लक्षणFix
Facade 5xxIntegration/auth.
Double hitSingle writer.
CORSUnify CORS.
SessionJWT.
Bad canarySticky canary.
CPU still highHot routes.
DNS TTLLower TTL.
Thin testsReal fixtures.
RoundingDecimal parity.

14. FAQ

प्र. Only HTTP?

Also workers.

प्र. APIGW vs ALB?

Mix = ALB.

प्र. How long?

Until zero hits.

प्र. Shared DB?

Read first.

प्र. Links?

APIGW chapters.

15. Interview Q&A (Beginner / Mid / Senior + MNC)

प्र. Beginner

Gradual replace.

प्र. Facade

Router entry.

प्र. Mid first

Leaf/pain.

प्र. Rollback

Route flip.

प्र. Senior data

Idempotent / CDC.

प्र. MNC

Ticket+drill.

16. Tips — English, मराठी आणि हिंदी

Ravindra Bagale's Tip (EN)

One hostname, many peels. Flip one path, learn, repeat.

Ravindra Bagale's Tip (MR)

एक hostname, अनेक peels. एक path flip, शिका, पुन्हा.

Tip (HI)

एक होस्टनाम, रास्ते धीरे-धीरे: एक flip, सीखो, दोहराओ।

घरी करून बघा

  1. 5 routes mark.
  2. Rollback लिहा.

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

  1. गोष्टी पासून सुरू, मग services.
  2. Existing chapters link — labs copy नको.
  3. Failure साठी design.
  4. Measure → मग पैसे.

17. Architecture decision checklist

  1. User journey 5 bullets, no AWS names.
  2. Sync vs async mark.
  3. Failure mode.
  4. Idempotency key.
  5. Data from access patterns.
  6. Cost 1x and 10x.
  7. Quotas ap-south-1.
  8. Auth decision.
  9. On-call + alarm.
  10. Deep chapter link.
  11. मग console/IaC.

18. 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.

19. अजून 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.

20. Glossary

Termअर्थ
Cold startपहिल्या invoke ची init
Idempotencyदोनदा = तोच effect
DLQFail झालेले messages
ChoreographyEvents; conductor नाही
OrchestrationSFN central
Fan-outएक → अनेक
Fan-inअनेक → join
Strangler figMonolith peel
SagaSteps + compensate
Provisioned concurrencyWarm N; pay

21. Practice: मोठ्याने explain

  1. 60s: strangler fig migration गोष्ट.
  2. 60s: sync vs async checkout.
  3. 60s: Lambda नको कधी.
  4. 60s: DLQ + idempotency.
  5. Record ×2.

22. Safe lab hygiene

  • Tag owner+expiry.
  • Budget alarm आधी.
  • Read-only first.
  • Cleanup.
  • No secrets in env/screenshots.
  • No provisioned on hello.

24. Myths

Mythखरं
Servers नाहीतServers आहेत; manage नको
नेहमी स्वस्तSteady वर EC2
No OpsIAM/data/alarms
एक LambdaBounded contexts
Queues optionalLoad leveler

25. Serverless error budget

Checkout error budget 0.1% असेल तर aggressive retries email duplicates देऊन budget जाळू शकतात. Money SLO ≠ notify SLO.

  1. दोन SLOs.
  2. Money retries bounded.
  3. Notify best-effort.
  4. Money page; notify ticket.

26. Regional notes (ap-south-1)

  • Labs Mumbai.
  • Feature availability.
  • Data residency.
  • Latency India.

27. 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 सोपा.

28. Pre-mortems

  1. Double charge headline.
  2. DLQ drain plan.
  3. Cognito outage mode.
  4. Runbook.

29. Currency / locale

Currencies आणि names rotate करा — global mental model.

30. Priya webhooks (INR)

  1. BF overload.
  2. Peel to Lambda.
  3. Canary then 100%.
  4. Delete late.

31. Anti-patterns

  • DB+API day one.
  • No parity.
  • Wrong order.

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

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

उजळणी card: Strangler not big-bang. Big-bang risk. Facade + gradual cut. Slice → parity → ramp. Reads first.
उजळणी card: Strangler not big-bang · PNG download करा · Card page उघडा
उजळणी card: Behavioral parity. Shape drift. Parity checks. Shadow → diff → serve. Rollback week.
उजळणी card: Behavioral parity · PNG download करा · Card page उघडा
तुलना: Big-bang rewrite vs Strangler fig. Big-bang rewrite: One cut. Strangler fig: Gradual slices.
तुलना: Big-bang rewrite vs Strangler fig · PNG download करा · Card page उघडा
तुलना: Client→Lambda direct vs Facade routing. Client→Lambda direct: Two entrypoints. Facade routing: One facade.
तुलना: Client→Lambda direct vs Facade routing · PNG download करा · Card page उघडा
मुलाखत card: Slice by capability. Random extract. One capability. First slice.
मुलाखत card: Slice by capability · PNG download करा · Card page उघडा
मुलाखत card: Facade at the edge. Dual URLs. Stable facade. Path rule.
मुलाखत card: Facade at the edge · PNG download करा · Card page उघडा
मुलाखत card: Shadow before serve. Blind flip. Shadow → ramp. Compare what.
मुलाखत card: Shadow before serve · PNG download करा · Card page उघडा
मुलाखत card: Data ownership is hard. Shared DB trap. Own the data. Dual vs CDC.
मुलाखत card: Data ownership is hard · PNG download करा · Card page उघडा

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

सराव Tasks

या scenario बद्दल

London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं Strangle

का: Idea.

काय करायचं: Wrap gradually तर 1.

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

सोपं Facade

का: Edge.

काय करायचं: Facade तर 1.

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

सोपं Slice

का: Cut.

काय करायचं: One capability तर 1.

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

सोपं Route

का: Traffic.

काय करायचं: Route paths तर 1.

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

सोपं Get-apis

का: CLI.

काय करायचं: list.

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

सोपं Parts

का: Map.

काय करायचं: edge/old/new.

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

सोपं Metric

का: Verify.

काय करायचं: Compare metrics तर 1.

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

मध्यम Parity

का: Safe.

काय करायचं: Parity तर 1.

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

मध्यम Dual

का: Data.

काय करायचं: Dual-write तर 1.

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

मध्यम Rollback

का: Ops.

काय करायचं: Rollback तर 1.

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

मध्यम Shadow

का: Verify.

काय करायचं: Shadow तर 1.

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

मध्यम Cut

का: Plan.

काय करायचं: first/later.

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

अवघड Data

का: Hard.

काय करायचं: Data hard तर 1.

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

अवघड Bigbang

का: Anti.

काय करायचं: Avoid big-bang तर 1.

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

अवघड Flags

का: Control.

काय करायचं: Flags तर 1.

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

अवघड Lab

का: Hygiene.

काय करायचं: Delete lab तर 1.

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