ज्या दिवशी आम्ही आमची साइनअप पाइपलाइन सुधारली

आमचे साइनअपचे आकडे दर आठवड्याला वाढत होते. टीममध्ये उत्साह होता. पण डेटा काहीतरी चुकीचा वाटत होता. वापरकर्ते कधीच परत येत नव्हते. ईमेल पत्ते विचित्र दिसत होते. आमचा ॲक्टिव्हेशन रेट (activation rate) कमी झाला होता.

मी डेटा तपासला. मला त्यात वाढ दिसली नाही. मला फक्त गोंधळ (noise) दिसला.

समस्या

मी आयपी (IP) पत्त्यानुसार साइनअप गटबद्ध करण्यासाठी एक क्वेरी (query) चालवली. एकाच आयपी पत्त्यावरून २४ तासांत शेकडो खाती नोंदवली गेली होती. त्यासाठी एकाच 'ब्राउझर फिंगरप्रिंट'चा वापर केला जात होता. एक स्क्रिप्ट आमच्या 'रजिस्टर एंडपॉइंट'वर (register endpoint) वार करत होती. त्यासाठी तात्पुरते (throwaway) ईमेल डोमेन वापरले जात होते. तो एक बॉट (bot) होता, माणूस नाही.

आमची साइनअप पाइपलाइन पूर्णपणे उघडी होती.

उपाय

आम्ही एका स्प्रिंटमध्ये (sprint) संरक्षणाचे तीन स्तर तयार केले.

स्तर १: थ्रॉटलिंग (Throttling)

आम्ही दोन प्रकारचे रेट लिमिटिंग (rate limiting) वापरले.

स्तर २: ब्लॉकलिस्ट (Blocklists)

स्तर ३: आयपी ब्लॉकलिस्ट (IP Blocklist)

काही आयपी सतत त्रास देतात. ते आमच्या सिस्टमच्या अनेक भागांचा गैरवापर करतात. आम्ही एक 'हार्ड ब्लॉकलिस्ट' वापरतो. या आयपीवरून येणाऱ्या प्रत्येक विनंतीला नाकारले जाते. मिडिलवेअर (middleware) त्यांना त्वरित थांबवते.

निकाल

उपाय करण्यापूर्वी: