الهدف
بعد هالدرس تقدر تبني rate limiting يشتغل على الـ edge بـ Upstash Redis — يحمي كل API routes من الاستخدام الزائد — بدون ما تكتب أكثر من 30 سطر كود.
ليش هذا الحين؟
الـ real-time جاهز. الحين نحمي الـ API. ترى حتى لو ما تتوقع abuse، يصير: سكربت مستخدم فيه loop غلط، bot يحاول يـ brute force الـ auth، أو مستخدم يضغط زر 100 مرة. بدون rate limiting، السيرفر مالك يتجمّد وكل المستخدمين يتأثرون. الـ rate limiting = صحة الـ API.
الفكرة
ليش أغلب الـ API abuse يجي من مستخدمين مسجّلين؟
الـ bots عادة ما يقدرون يتجاوزون الـ authentication. المشكلة الحقيقية هي:
- Bugs: كود المستخدم فيه loop يرسل 1000 request في ثانية
- Scripts: مستخدم يسوي automation على حسابه
- Power users: مستخدم يستخدم التطبيق بشكل ما توقعته
لهذا تحتاج per-user limits — مو بس per-IP.
Sliding Window Algorithm:
مسموح 100 request / دقيقة لكل user
→ كل request يضيف count
→ بعد دقيقة ينصفّر
→ لو تجاوز الـ count، يرجع 429
Upstash Redis:
Redis serverless يشتغل على الـ edge — latency < 5ms. مثالي لـ rate limiting لأن كل request يحتاج check سريع.