مقالات تقنية بدون حشو
احفظ الملفات خارج الكود والمجلد العام، وابدأ بالقرص المحلي حتى نحو 200GB ثم انتقل إلى تخزين متوافق مع S3 على سيرفر سعودي. الملفات الخاصة بروابط موقعة تنتهي خلال دقائق، والنسخ الاحتياطي للملفات منفصل عن الكود.
شغّل FastAPI تحت Gunicorn بعمّال Uvicorn وخلف Nginx، وابدأ بعاملين لكل vCPU، واحفظ الأسرار في ملف بيئة بصلاحيات 600. على سيرفر 4 vCPU و8GB يخدم 8 عمّال نحو 2,300 طلب في الثانية بذاكرة 1.2GB فقط.
تشغيل Node.js بأمر node مباشرة يعني أن تطبيقك يموت مع أول خطأ أو إعادة إقلاع. PM2 يعيد تشغيله تلقائياً، ويوزعه على كل الأنوية بوضع cluster، ويعيده عند تجاوز سقف الذاكرة، ويدوّر السجلات، ويقلع مع السيرفر عبر systemd.
تعديل جدول بملايين الصفوف على الإنتاج ممكن بلا توقف إذا اخترت الخوارزمية الصحيحة: INSTANT لإضافة الأعمدة في MySQL 8، وgh-ost أو pt-online-schema-change لإعادة البناء الثقيلة، مع نمط التوسيع ثم الترحيل ثم التقليص بدل تغيير واحد كاسر.
تطبيق Inertia بلا SSR يرسل لمحركات البحث صفحة شبه فارغة تنتظر JavaScript، ومع SSR يصل المحتوى كاملاً في أول استجابة. تشغّل خادم SSR كخدمة systemd بجانب Laravel بذاكرة من 100 إلى 200MB، وتتحقق بأمر curl بسيط أن الصفحة مرسومة فعلاً.
الترقية الآمنة إلى PHP 8.4 تبدأ بفحص الكود بـPHPStan وRector قبل لمس السيرفر، ثم تشغيل PHP-FPM 8.4 بجانب النسخة الحالية وتحويل موقع واحد في كل مرة، مع خطة رجوع لا تتجاوز دقيقة واحدة بتعديل سطر في Nginx.
Laravel Reverb خادم WebSocket رسمي يعمل داخل سيرفرك بدل Pusher، فلا تدفع لكل رسالة وتبقى بيانات الأحداث داخل المملكة. تشغّله خلف Nginx مع TLS كخدمة systemd، وسيرفر 2vCPU/4GB يحتمل آلاف الاتصالات المتزامنة إذا ضبطت حد الملفات المفتوحة.
إذا كان كل ما تريده تخزيناً مؤقتاً بسيطاً لمفتاح وقيمة، فـMemcached يكفي وأخفّ. أما إذا احتجت قوائم وطوابير وpub/sub وثباتاً بعد إعادة التشغيل وبنى بيانات أغنى، فـRedis هو الجواب، وهو ما يختاره أغلب تطبيقات اليوم.
إذا كانت بياناتك أقل من بضعة ملايين متجه ولديك PostgreSQL أصلاً، فامتداد pgvector يكفيك ويوفّر قاعدة واحدة. عند الحجم الكبير أو الحاجة لسرعة بحث عالية بتزامن كثيف، تتفوق قواعد متخصصة مثل Qdrant وMilvus.