અમે અમારી પોતાની સેવાઓને રેટ-લિમિટ કરી રહ્યા હતા
Mythex નું API એક નેટવર્ક એડ્રેસ પરથી મિનિટે 300 વિનંતીઓની છૂટ આપે છે. આ મર્યાદા એક વ્યક્તિ કે સ્ક્રિપ્ટને API પર હથોડા મારતા રોકવા માટે છે. પ્રોડક્શનમાં, તેણે તેના બદલે અમારી પોતાની સેવાઓને નકારવાનું શરૂ કર્યું — અમારી એજ લેયર, જે પબ્લિશ થયેલી એપ્સ પીરસે છે, અને તે સેવા જે AI એજન્ટ ચલાવે છે — કારણ કે તેમાંથી દરેક API ને માત્ર થોડાં જ એડ્રેસ પરથી પહોંચે છે. અમારી આંતરિક ક્રેડેન્શિયલ ધરાવતી વિનંતીઓ હવે મુક્તિ ધરાવે છે, અને બીજા બધાને પહેલાંની જેમ જ મર્યાદિત રાખવામાં આવે છે.
લક્ષણ
API એ અમારી પોતાની કેટલીક આંતરિક કૉલ્સનો જવાબ 429 Too Many Requests થી આપવાનું શરૂ કર્યું. ત્રણ પ્રકારના કૉલને અસર થઈ, અને દરેક Mythex વાપરનાર માટે મહત્ત્વના છે:
- જાણવું કે કસ્ટમ ડોમેન પર કઈ એપ રહે છે. જ્યારે મુલાકાતી પોતાના ડોમેન પર પબ્લિશ થયેલી એપ ખોલે, ત્યારે અમારી એજ API ને પૂછે છે કે તે સાઇટ ક્યાં છે. ત્યાં 429 એટલે એવો મુલાકાતી જે સાઇટ સુધી પહોંચી શકતો નથી.
- ચાલતા એજન્ટ ટર્નને સાચવવો. એજન્ટ કામ કરે ત્યારે તેની પ્રગતિ સાથોસાથ સાચવાય છે, જેથી રિફ્રેશ કે તૂટેલા કનેક્શન પછી પણ જવાબ બચે. ત્યાં 429 એટલે જે પ્રગતિ સચવાઈ નહીં.
- પ્રિવ્યૂની ઍક્સેસ તપાસવી. તમે બનાવી રહ્યા હો તે એપનો પ્રિવ્યૂ ગેટેડ છે, અને તે ગેટ API ને પૂછે છે. ત્યાં 429 એટલે જે પ્રિવ્યૂ ખૂલશે નહીં.
આમાંથી કોઈ પણ API ને કોલ કરનાર લોકો નહોતા. બધા અમે જ હતા.
તે કેમ થયું
પ્રતિ-એડ્રેસ રેટ મર્યાદા એક ધારણા રાખે છે: એક એડ્રેસ લગભગ એક કૉલર છે. લોકો માટે એ પૂરતું નજીક છે. અમારા પોતાના ઇન્ફ્રાસ્ટ્રક્ચર માટે તે ખોટું છે.
- પબ્લિશ થયેલી એપ્સ અને પ્રિવ્યૂ પીરસતી એજ સેવા API ને થોડાં શેર કરેલાં આઉટગોઇંગ એડ્રેસ પરથી પહોંચે છે. દરેક એપના દરેક મુલાકાતી, અને દરેક પ્રિવ્યૂ તપાસ, તે થોડામાંથી એક પરથી આવતી દેખાય છે.
- ઓર્કેસ્ટ્રેટર — જે એજન્ટ ટર્ન ચલાવે છે તે સેવા — API ને એક કન્ટેનર એડ્રેસ પરથી પહોંચે છે. દરેક ચાલતો ટર્ન, દરેક વપરાશકર્તા માટે, તે એક જ એડ્રેસ વહેંચે છે.
તેથી એક વ્યક્તિ માટેનું બજેટ આખી સેવાના તમામ ટ્રાફિકમાં વહેંચાઈ જતું હતું. તે સેવાઓએ તેને અંદરોઅંદર વાપરી નાખ્યું, અને લિમિટરે જે કહેવાયું હતું તે કર્યું: તેમને નકાર્યા.
ઉકેલ
અમારી પોતાની સેવાઓ પહેલેથી સાબિત કરે છે કે તે કોણ છે. દરેક આંતરિક કૉલ આંતરિક ટોકન લઈ જાય છે, અને API ના આંતરિક વિભાગ હેઠળનો દરેક રૂટ કંઈ પણ કરતા પહેલાં તે ટોકન ચકાસે છે.
રેટ લિમિટર હવે તે જ ચકાસણી વાપરે છે. જે વિનંતીનું ટોકન આંતરિક ટોકન સાથે મેળ ખાય છે તે એલાઉ-લિસ્ટ પર છે અને પ્રતિ-એડ્રેસ બજેટમાં ગણાતી નથી. બાકી બધું પહેલાંની જેમ જ ગણાય છે: પ્રતિ એડ્રેસ મિનિટે 300 વિનંતીઓ.
બે વિગતોએ આને છિદ્ર બનતા રોક્યું:
- ખોટા ટોકનને કોઈ છૂટ નથી. એલાઉ-લિસ્ટ ફક્ત સાચા આંતરિક ટોકન સાથે મેળ ખાય છે. બનાવટી ટોકનવાળી વિનંતી બીજી કોઈ પણ જેમ ગણાય અને થ્રોટલ થાય છે, અને આંતરિક રૂટ તેને
401 Unauthorizedથી નકારે છે. - મર્યાદા પોતે બદલાઈ નહીં. જગ્યા કરવા અમે આંકડો વધાર્યો નહીં. વધારવાથી સમસ્યા ટ્રાફિક ફરી વધે ત્યાં સુધી છુપાઈ જાત, અને જે કેસ માટે મર્યાદા છે તેના માટેનું રક્ષણ નબળું પડત.
અમે લિમિટરની સેટિંગ્સ એક નાના ફંક્શનમાં મૂકી અને તેના પર ટેસ્ટ લખ્યા. એક ટેસ્ટ આંતરિક ટોકન સાથે 20 વિનંતીઓ મોકલે છે, 5 ની મર્યાદાવાળા લિમિટરને, અને અપેક્ષા રાખે છે કે 20 બધી સફળ થાય. બીજો એક એડ્રેસ પરથી સામાન્ય વિનંતીઓ મોકલે છે અને અપેક્ષા રાખે છે કે પહેલી પાંચ સફળ થાય અને પછીની નકારાય. ત્રીજો બનાવટી ટોકનવાળી વિનંતીઓ મોકલે છે અને અપેક્ષા રાખે છે કે તે એ જ રીતે નકારાય.
અમે તેમાંથી શું શીખ્યા
- મર્યાદાઓમાં ધારણાઓ હોય છે. “એક એડ્રેસ, એક કૉલર” પ્રતિ-એડ્રેસ મર્યાદામાં બનેલું છે. જ્યારે તમારી પોતાની સેવાઓ શેર કરેલાં એડ્રેસ પાછળ બેસે ત્યારે તે સાચું રહેતું નથી — અને ઘણી બેસે છે: લોડ બેલેન્સર, એજ નેટવર્ક, કન્ટેનર, ઑફિસ નેટવર્ક.
- તમારા પોતાના ટ્રાફિકને એડ્રેસથી નહીં, ઓળખથી અલગ પાડો. એડ્રેસ એ છે કે ટ્રાફિક કેવી રીતે આવે છે, કોણે મોકલ્યું તે નહીં. અમારી પાસે પહેલેથી જ એવી ક્રેડેન્શિયલ હતી જે સાબિત કરે કે કૉલ અમારો છે; લિમિટર ફક્ત તેના તરફ જોતું નહોતું.
- આંકડો વધારીને તેને ઠીક ન કરો. મોટી મર્યાદાથી 429 થોડા સમય માટે જતા રહ્યા હોત, ઓછું રક્ષણ આપ્યું હોત, અને પછીથી ફરી નિષ્ફળ ગયું હોત.
- કોણ થ્રોટલ થઈ રહ્યું છે તે જુઓ. તમારી પોતાની સેવા પર પડતું 429 એ તમારી મર્યાદા વિશે બગ રિપોર્ટ છે, લિમિટર કામ કરે છે તેની નિશાની નથી.
જો તમે Mythex પર બનાવો છો તો તેનો અર્થ શું છે
તમારી બાજુએ બદલવાનું કંઈ નથી. કસ્ટમ ડોમેન પરની પબ્લિશ થયેલી એપ્સ, એજન્ટ ટર્ન અને પ્રિવ્યૂ હવે બાકીનું Mythex કેટલું વ્યસ્ત છે તેના પર આધારિત નથી. તમારી એપનો પોતાનો ટ્રાફિક તમારી એપની બાબત છે: અહીં વર્ણવેલી મર્યાદા અમારા API પર છે, તમે પબ્લિશ કરો છો તે એપ્સ પર નહીં.
જો તમે પોતાનું બેકએન્ડ ચલાવો છો, તો તમે ઉમેરો તે કોઈ પણ રેટ મર્યાદા પર તે જ ફંદો લાગુ પડે છે. API શું છે અને AI-બનાવેલી એપ્સ માટે સિક્યોરિટી ચેકલિસ્ટ શરૂ કરવા માટે સારી જગ્યા છે. અને અમારા પોતાના ઇન્ફ્રાસ્ટ્રક્ચર પોતાની જ રસ્તામાં આવવાના બીજા કિસ્સા માટે, અમે ડિપ્લોયને શૂન્ય 502 એરર સુધી કેવી રીતે લાવ્યા જુઓ.