ഞങ്ങളുടെ സൈൻഅപ്പ് പൈപ്പ്ലൈൻ ഞങ്ങൾ ശരിയാക്കിയ ദിവസം
ഞങ്ങളുടെ സൈൻഅപ്പ് കണക്കുകൾ ഓരോ ആഴ്ചയും വർദ്ധിച്ചുകൊണ്ടിരുന്നു. ടീം ആവേശത്തിലായിരുന്നു. എന്നാൽ ഡാറ്റയിൽ എന്തോ പിശക് ഉള്ളതായി തോന്നി. ഉപയോക്താക്കൾ ഒരിക്കലും തിരിച്ചുവരുന്നില്ലായിരുന്നു. ഇമെയിൽ വിലാസങ്ങൾ വിചിത്രമായിരുന്നു. ഞങ്ങളുടെ ആക്ടിവേഷൻ നിരക്ക് കുറഞ്ഞു.
ഞാൻ ഡാറ്റ പരിശോധിച്ചു. എനിക്ക് വളർച്ചയല്ല, മറിച്ച് അനാവശ്യമായ വിവരങ്ങൾ (noise) മാത്രമാണ് ലഭിച്ചത്.
പ്രശ്നം
ഐപി (IP) അഡ്രസ്സ് അനുസരിച്ച് സൈൻഅപ്പുകളെ ഗ്രൂപ്പ് ചെയ്യാൻ ഞാൻ ഒരു ക്വറി (query) റൺ ചെയ്തു. ഒരു ഐപി അഡ്രസ്സിൽ നിന്ന് 24 മണിക്കൂറിനുള്ളിൽ നൂറുകണക്കിന് അക്കൗണ്ടുകൾ രജിസ്റ്റർ ചെയ്തിരുന്നു. അത് ഒരേ ബ്രൗസർ ഫിംഗർപ്രിന്റ് (browser fingerprint) ആണ് ഉപയോഗിച്ചിരുന്നത്. ഒരു സ്ക്രിപ്റ്റ് ഞങ്ങളുടെ രജിസ്റ്റർ എൻഡ്പോയിന്റിലേക്ക് (register endpoint) നിരന്തരം സന്ദേശങ്ങൾ അയക്കുന്നുണ്ടായിരുന്നു. അത് താൽക്കാലിക ഇമെയിൽ ഡൊമെയ്നുകൾ (throwaway email domains) ഉപയോഗിച്ചിരുന്നു. അതൊരു മനുഷ്യനായിരുന്നില്ല, മറിച്ച് ഒരു ബോട്ട് (bot) ആയിരുന്നു.
ഞങ്ങളുടെ സൈൻഅപ്പ് പൈപ്പ്ലൈൻ പൂർണ്ണമായും തുറന്നുകിടക്കുകയായിരുന്നു.
പരിഹാരം
ഒരു സ്പ്രിന്റിനുള്ളിൽ (sprint) ഞങ്ങൾ മൂന്ന് തട്ടുകളിലുള്ള സംരക്ഷണം നിർമ്മിച്ചു.
ലെയർ 1: ത്രോട്ട്ലിംഗ് (Throttling)
ഞങ്ങൾ രണ്ട് തരത്തിലുള്ള റേറ്റ് ലിമിറ്റിംഗ് (rate limiting) രീതികൾ ഉപയോഗിച്ചു.
- Per-IP throttling: ഒരു ചെറിയ സമയപരിധിക്കുള്ളിൽ ഒരു ഐപിയിൽ നിന്നുള്ള സൈൻഅപ്പ് ശ്രമങ്ങൾ ഞങ്ങൾ പരിമിതപ്പെടുത്തുന്നു.
- Per-domain throttling: ഒരേ ഇമെയിൽ ഡൊമെയ്നിൽ നിന്നുള്ള സൈൻഅപ്പുകൾ കൂടുതൽ സമയപരിധിക്കുള്ളിൽ പരിമിതപ്പെടുത്തുന്നു. ഒരേ ഡൊമെയ്ൻ ഉപയോഗിച്ച് വ്യത്യസ്ത ഐപികൾ ഉപയോഗിക്കുന്ന ബോട്ടുകളെ ഇത് തടയുന്നു.
ലെയർ 2: ബ്ലോക്ക്ലിസ്റ്റുകൾ (Blocklists)
- ബ്ലോക്ക് ചെയ്ത ഇമെയിൽ ഡൊമെയ്നുകൾ: താൽക്കാലിക ഇമെയിൽ ഡൊമെയ്നുകൾ ഉപയോഗിച്ചുള്ള ഏതൊരു രജിസ്ട്രേഷനും ഞങ്ങൾ നിരസിക്കുന്നു.
- ബ്ലോക്ക് ചെയ്ത യൂസർ ഏജന്റുകൾ (user agents): ബ്രൗസർ അല്ലാത്ത ടൂളുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ ഞങ്ങൾ നിരസിക്കുന്നു. ആക്രമണകാരിക്ക് ഞങ്ങൾ യാതൊരു വിവരങ്ങളും നൽകുന്നില്ല.
ലെയർ 3: ഐപി ബ്ലോക്ക്ലിസ്റ്റ് (IP Blocklist)
ചില ഐപി അഡ്രസ്സുകൾ നിരന്തരം ആക്രമണം തുടരുന്നു. അവ ഞങ്ങളുടെ സിസ്റ്റത്തിന്റെ പല ഭാഗങ്ങളും ദുരുപയോഗം ചെയ്യുന്നു. ഇതിനായി ഞങ്ങൾ ഒരു ഹാർഡ് ബ്ലോക്ക്ലിസ്റ്റ് (hard blocklist) ഉപയോഗിക്കുന്നു. ഈ ഐപികളിൽ നിന്നുള്ള എല്ലാ അഭ്യർത്ഥനകളും നിരസിക്കപ്പെടുന്നു. മിഡിൽവെയർ (middleware) അവയെ ഉടൻ തന്നെ തടയുന്നു.
ഫലങ്ങൾ
പരിഹാരത്തിന് മുമ്പ്:
- ഒരു ഐപി ഒരു ദിവസം നൂറുകണക്കിന് അക്കൗണ്ടുകൾ സൃഷ്ടിച്ചു.
- താൽക്കാലിക ഡൊമെയ്നുകൾ ഉപയോഗിച്ചുള്ളവയായിരുന്നു ഭൂരിഭാഗം സൈൻഅപ്പുകളും.
- വ്യാജ അക്കൗണ്ടുകൾ ഞങ്ങളുടെ ആക്ടിവേഷൻ നിരക്ക് കുറച്ചു.
- ഞങ്ങളുടെ ഡാറ്റ തെറ്റായിരുന്നു.
പരിഹാരത്തിന് ശേഷം:
- രജിസ്ട്രേഷൻ ഫാമിംഗ് (Registration farming) പൂജ്യമായി കുറഞ്ഞു.
- താൽക്കാലിക ഡൊമെയ്നുകൾ ഉപയോഗിച്ചുള്ള സൈൻഅപ്പുകൾ നിലച്ചു.
- സൈൻഅപ്പ് കണക്കുകൾ യഥാർത്ഥ മനുഷ്യരുടെ താൽപ്പര്യം കാണിക്കുന്നു.
- ഞങ്ങളുടെ ആക്ടിവേഷൻ നിരക്ക് പഴയ നിലയിലായി.
പഠിച്ച പാഠങ്ങൾ
- അളവിനേക്കാൾ (volume) പ്രധാനം സിഗ്നലുകളാണ് (signal). ബോട്ടുകൾ റിറ്റൻഷൻ (retention), വരുമാനം (revenue) തുടങ്ങിയ അളവുകളെ വിശ്വസിക്കാൻ കഴിയാത്തതാക്കുന്നു.
- ചെറിയ കോഡ് മാറ്റങ്ങൾ വലിയ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു. ഞങ്ങൾ മൂന്ന് ലളിതമായ സംവിധാനങ്ങളാണ് ഉപയോഗിച്ചത്.
- ലെയറുകൾ അത്യാവശ്യമാണ്. ഒരു പരിധി മാത്രം മതിയാകില്ല. ഒന്നിലധികം സംവിധാനങ്ങളുടെ സംയോജനം കൂടുതൽ സുരക്ഷ നൽകുന്നു.
- നിങ്ങളുടെ പ്രതികരണങ്ങൾ നിയന്ത്രിക്കുക. യഥാർത്ഥ ഉപയോക്താക്കൾക്ക് ഫീഡ്ബാക്ക് നൽകുക. ദുരുപയോഗം ചെയ്യുന്നവർക്ക് മറുപടി നൽകാതിരിക്കുക.
വളർച്ച എന്നാൽ ഉപയോക്താക്കളെ നേടുക എന്നത് മാത്രമല്ല. യഥാർത്ഥ ഉപയോക്താക്കളെ നേടുക എന്നതാണ്. നിങ്ങളുടെ ഉൽപ്പന്ന സംബന്ധമായ തീരുമാനങ്ങൾ കൃത്യമായ ഡാറ്റയെ ആശ്രയിച്ചിരിക്കുന്നു. ആ ഡാറ്റ തുടങ്ങുന്നത് നിങ്ങളുടെ രജിസ്ട്രേഷൻ എൻഡ്പോയിന്റിൽ നിന്നാണ്.
Source: https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664