మేము మా సైన్అప్ పైప్లైన్ను సరిచేసిన రోజు
మా సైన్అప్ సంఖ్యలు ప్రతి వారం పెరుగుతూ వచ్చాయి. టీమ్ చాలా ఉత్సాహంగా ఉంది. కానీ డేటా ఏదో తప్పుగా అనిపించింది. యూజర్లు మళ్ళీ తిరిగి రాలేదు. ఈమెయిల్ అడ్రస్లు వింతగా ఉన్నాయి. మా యాక్టివేషన్ రేటు పడిపోయింది.
నేను డేటాను పరిశీలించాను. నాకు వృద్ధి కనిపించలేదు. కేవలం నాయిస్ (noise) మాత్రమే కనిపించింది.
సమస్య
నేను IP అడ్రస్ ఆధారంగా సైన్అప్లను గ్రూప్ చేయడానికి ఒక క్వెరీ (query) రన్ చేశాను. ఒకే IP అడ్రస్ నుండి 24 గంటల్లో వందలాది అకౌంట్లు రిజిస్టర్ అయ్యాయి. అది ఒకే బ్రౌజర్ ఫింగర్ప్రింట్ను ఉపయోగించింది. ఒక స్క్రిప్ట్ మా రిజిస్టర్ ఎండ్పాయింట్ను (register endpoint) హిట్ చేస్తోంది. అది తాత్కాలిక ఈమెయిల్ డొమైన్లను (throwaway email domains) ఉపయోగించింది. అది ఒక వ్యక్తి కాదు, ఒక బాట్ (bot).
మా సైన్అప్ పైప్లైన్ పూర్తిగా తెరిచి ఉంది.
పరిష్కారం
మేము ఒకే స్ప్రింట్లో మూడు పొరల రక్షణను (three layers of protection) నిర్మించాము.
లేయర్ 1: త్రోట్లలింగ్ (Throttling)
మేము రెండు రకాల రేట్ లిమిటింగ్ (rate limiting) పద్ధతులను ఉపయోగించాము.
- Per-IP throttling: ఒక చిన్న కాలపరిమితిలో ఒకే IP నుండి వచ్చే సైన్అప్ ప్రయత్నాలను మేము పరిమితం చేస్తాము.
- Per-domain throttling: ఎక్కువ కాలపరిమితిలో ఒకే ఈమెయిల్ డొమైన్ నుండి వచ్చే సైన్అప్లను మేము పరిమితం చేస్తాము. ఇది ఒకే డొమైన్ను ఉపయోగిస్తూ వేర్వేరు IPలను వాడే బాట్లను అడ్డుకుంటుంది.
లేయర్ 2: బ్లాక్లిస్ట్లు (Blocklists)
- బ్లాక్ చేయబడిన ఈమెయిల్ డొమైన్లు: డిస్పోజబుల్ (disposable) ఈమెయిల్ డొమైన్లను ఉపయోగించి చేసే ఏ రిజిస్ట్రేషన్నైనా మేము తిరస్కరిస్తాము.
- బ్లాక్ చేయబడిన యూజర్ ఏజెంట్లు: బ్రౌజర్ కాని టూల్స్ నుండి వచ్చే రిక్వెస్ట్లను మేము తిరస్కరిస్తాము. దాడి చేసే వ్యక్తికి మేము ఎటువంటి వివరాలను అందించము.
లేయర్ 3: IP బ్లాక్లిస్ట్
కొన్ని IPలు పదేపదే ప్రయత్నిస్తుంటాయి. అవి మా సిస్టమ్ యొక్క బహుళ భాగాలను దుర్వినియోగం చేస్తాయి. మేము ఒక హార్డ్ బ్లాక్లిస్ట్ను (hard blocklist) ఉపయోగిస్తాము. ఈ IPల నుండి వచ్చే ప్రతి రిక్వెస్ట్ను మేము తిరస్కరిస్తాము. మిడిల్వేర్ (middleware) వాటిని వెంటనే అడ్డుకుంటుంది.
ఫలితాలు
పరిష్కారం కంటే ముందు:
- ఒకే IP రోజులో వందలాది అకౌంట్లు సృష్టించింది.
- సైన్అప్లలో ఎక్కువ భాగం డిస్పోజబుల్ డొమైన్ల ద్వారానే జరిగాయి.
- నకిలీ అకౌంట్లు మా యాక్టివేషన్ రేటును తగ్గించాయి.
- మా డేటా తప్పుగా ఉంది.
పరిష్కారం తర్వాత:
- రిజిస్ట్రేషన్ ఫార్మింగ్ (Registration farming) సున్నాకి పడిపోయింది.
- డిస్పోజబుల్ డొమైన్ సైన్అప్లు ఆగిపోయాయి.
- సైన్అప్ సంఖ్యలు నిజమైన మానవ ఉద్దేశాన్ని (real human intent) చూపించాయి.
- మా యాక్టివేషన్ రేటు తిరిగి సాధారణ స్థితికి వచ్చింది.
నేర్చుకున్న పాఠాలు
- వాల్యూమ్ (volume) కంటే సిగ్నల్ (signal) ముఖ్యం. బాట్లు రిటెన్షన్ (retention) మరియు రెవెన్యూ (revenue) వంటి మెట్రిక్స్ను నమ్మదగనివిగా మారుస్తాయి.
- చిన్న కోడ్ ఫిక్స్లు పెద్ద సమస్యలను పరిష్కరిస్తాయి. మేము మూడు సరళమైన మెకానిజమ్లను ఉపయోగించాము.
- లేయర్లు అవసరం. ఒకే పరిమితి సరిపోదు. వివిధ రకాల కలయిక ఎక్కువ విస్తృతిని కవర్ చేస్తుంది.
- మీ ప్రతిస్పందనలను (responses) నియంత్రించండి. చట్టబద్ధమైన యూజర్లకు ఫీడ్బ్యాక్ ఇవ్వండి. దురుద్దేశం ఉన్నవారికి ఎటువంటి సమాచారం ఇవ్వకుండా మౌనంగా ఉండండి.
వృద్ధి అంటే కేవలం యూజర్లను పొందడం మాత్రమే కాదు. నిజమైన యూజర్లను పొందడం ముఖ్యం. మీ ఉత్పత్తి నిర్ణయాలు (product decisions) మంచి డేటాపై ఆధారపడి ఉంటాయి. ఆ డేటా మీ రిజిస్ట్రేషన్ ఎండ్పాయింట్ (registration endpoint) నుండే మొదలవుతుంది.
మూలం: https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664