స్కేలింగ్ విషయంలో మీ సర్వర్లెస్ మీకు అబద్ధం చెబుతోంది
సర్వర్లెస్ కంప్యూటింగ్ అనంతమైన స్కేల్ మరియు సున్నా ఓవర్హెడ్ (zero overhead) ఇస్తామని వాగ్దానం చేస్తుంది. AWS Lambda లేదా Google Cloud Run వంటి ప్లాట్ఫారమ్లు మీ కంప్యూట్ లేయర్లను తక్షణమే స్కేల్ చేస్తాయి.
కానీ మీ బ్యాకెండ్ ఇప్పటికీ క్రాష్ అవుతోంది.
సమస్య మీ కంప్యూట్లో లేదు. సమస్య మీ డేటాబేస్లో ఉంది.
మీ ఫంక్షన్లు స్కేల్ అయినప్పుడు, అవి 'కనెక్షన్ స్టార్మ్' (connection storm) సృష్టిస్తాయి. ప్రతి కొత్త ఫంక్షన్ ఇన్స్టాన్స్ మీ డేటాబేస్కు కొత్త కనెక్షన్ను తెరవడానికి ప్రయత్నిస్తుంది. మీ వద్ద 1,000 ఫంక్షన్లు ఉంటే, ఒకేసారి 1,000 కనెక్షన్ రిక్వెస్ట్లు మీ Postgres లేదా MySQL ఇన్స్టాన్స్ను చేరుతాయి.
రిలేషనల్ డేటాబేస్లకు కఠినమైన పరిమితులు (hard limits) ఉంటాయి. మీరు ఆ పరిమితిని చేరుకోగానే, కొత్త కనెక్షన్లు విఫలమవుతాయి. ఇది అధిక లాటెన్సీ (high latency) మరియు 5xx ఎర్రర్లకు దారితీస్తుంది. మీ కంప్యూట్ సిద్ధంగా ఉంటుంది, కానీ మీ డేటాబేస్ తట్టుకోలేక విఫలమవుతుంది.
మీరు ఈ మూడు వ్యూహాలతో దీనిని పరిష్కరించవచ్చు:
కనెక్షన్ ప్రాక్సీని (Connection Proxy) ఉపయోగించండి ఫంక్షన్లను నేరుగా మీ డేటాబేస్కు కనెక్ట్ చేయకండి. AWS RDS Proxy లేదా Google Cloud SQL Proxy వంటి ప్రాక్సీని ఉపయోగించండి. ఈ లేయర్ మీ ఫంక్షన్లకు మరియు మీ డేటాబేస్కు మధ్య ఉంటుంది. ఇది తక్కువ సంఖ్యలో పర్సిస్టెంట్ కనెక్షన్ల పూల్ను నిర్వహిస్తుంది మరియు వాటిని మీ అనేక ఫంక్షన్ల మధ్య పంచుతుంది.
డేటా ప్రాక్సీ లేయర్లను అమలు చేయండి అధునాతన ప్రాక్సీలు కేవలం కనెక్షన్లను నిర్వహించడమే కాకుండా మరిన్ని పనులు చేయగలవు:
- రీడ్స్ (reads) మరియు రైట్స్ (writes)ను వేర్వేరు డేటాబేస్ ఇన్స్టాన్స్లకు విభజించడం.
- డేటాబేస్ లోడ్ను తగ్గించడానికి తరచుగా ఉపయోగించే క్వెరీలను (queries) క్యాష్ చేయడం.
- క్వెరీలు డేటాబేస్కు చేరుకోకముందే వాటిని ఆప్టిమైజ్ చేయడం.
- అసింక్రోనస్ రైట్స్కు (Asynchronous Writes) మారండి ప్రతి యూజర్ చర్యను సింక్రోనస్ డేటాబేస్ రైట్గా మార్చడం ఆపండి. చాలా పనులకు తక్షణ కన్సిస్టెన్సీ (instant consistency) అవసరం లేదు.
దీనికి బదులుగా: User Action -> Function -> Sync DB Write -> Response
దీనిని ప్రయత్నించండి: User Action -> Function -> Push Event to Queue -> Fast Response
ఒక ప్రత్యేక ఫంక్షన్ ఆ ఈవెంట్ను తీసుకుని, తర్వాత డేటాబేస్లో రాస్తుంది. ఇది అకస్మాత్తుగా పెరిగే ట్రాఫిక్ స్పైక్స్ నుండి మీ డేటాబేస్ను రక్షిస్తుంది.
నిజమైన స్కేలబిలిటీకి కేవలం కంప్యూట్ను స్కేల్ చేయడం మాత్రమే సరిపోదు. మీరు ఎలాస్టిక్ డేటా యాక్సెస్ (elastic data access) కోసం డిజైన్ చేయాలి. సిద్ధాంతపరమైన గరిష్ట స్థాయిల (theoretical maximums) కోసం రిసోర్స్లను కేటాయించడం ఆపండి. మీ బర్స్టింగ్ ఫంక్షన్లకు మరియు మీ డేటాకు మధ్య బఫర్లను నిర్మించడం ప్రారంభించండి.
మూలం: https://dev.to/prabashanadev/your-serverless-is-lying-to-you-about-scale-4cga