نشر Canary مع PHP: تحديثات آمنة بدون قلق

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

نشر Canary مع PHP: تحديثات آمنة بدون قلق

\n\n

كل مطور يعرف هذا الشعور: تنشر نسخة جديدة على الإنتاج، تحبس أنفاسك وتتمنى ألا ينهار كل شيء. وإذا انهار - ستكون أول من يعلم عندما يسقط الخادم تحت ضغط آلاف المستخدمين.

\n\n

لكن هناك طريقة أذكى. نشر Canary (النشر التدريجي) هو أسلوب يتم فيه إرسال النسخة الجديدة من التطبيق أولاً إلى مجموعة صغيرة من المستخدمين، ثم إذا كان كل شيء على ما يرام، يتم نشرها تدريجياً للجميع. الاسم مشتق من عمال المناجم القدماء الذين كانوا يأخذون معهم طيور الكناري: إذا صمت الطائر - كان هناك غاز في المنجم. في حالتنا، "الكناري" هو أول 5-10% من حركة المرور التي تختبر قوة الكود.

\n\n

في هذه المقالة، سأوضح لك كيفية تنفيذ نشر Canary في PHP باستخدام أمثلة كود حقيقية، وموازن حركة المرور، وأدوات المراقبة. ستتعلم كيفية تحديث التطبيق بدون توقف، والتراجع السريع عن التغييرات، وإجراء اختبار A/B بدون ألم.

\n\n

لماذا Canary ليس مجرد كلمة رنانة؟

\n\n

النشر التقليدي (blue-green أو rolling update) يعمل، لكن له عيوب:

\n
    \n
  • Blue-green يتطلب بنية تحتية مزدوجة - مكلف وليس مبرراً دائماً.
  • \n
  • Rolling update يحدث الخوادم واحداً تلو الآخر، لكن إذا كان هناك خطأ في الكود - سيصل للجميع في النهاية.
  • \n
  • Feature flags جيدة، لكنها لا تحل مشكلة الأداء أو الأخطاء التي تظهر فقط تحت الضغط.
  • \n
\n\n

نشر Canary يحل هذه المشاكل بأناقة: ترسل الكود الجديد إلى 5-10% من المستخدمين، تراقب المقاييس (الأخطاء، زمن الاستجابة، استخدام المعالج)، وإذا كان كل شيء جيداً - تزيد النسبة. إذا لم يكن - فقط ترجع هذه الـ 5%.

\n\n

بالنسبة لـ PHP، هذا مهم بشكل خاص لأن العديد من المشاريع تعمل على استضافة مشتركة أو VPS بدون منسق معقد. لكن حتى على خادم عادي مع nginx يمكنك إعداد canary - وسأوضح لك كيف.

\n\n

معمارية نشر Canary لتطبيق PHP

\n\n

تخيل أن لدينا تطبيق PHP نموذجي على Laravel أو Symfony يعمل خلف nginx. لتنفيذ canary، سنحتاج إلى:

\n\n
    \n
  • نسختين من التطبيق - مستقرة (stable) وجديدة (canary).
  • \n
  • موازن - nginx، الذي سيوجه جزءاً من حركة المرور إلى canary.
  • \n
  • آلية التبديل - عبر الكوكيز، عنوان IP، أو الرؤوس.
  • \n
  • مراقبة - لمعرفة أن canary يعمل بشكل طبيعي.
  • \n
\n\n

إليك المخطط الأساسي:

\n\n
مستخدم → nginx (موازن) → stable (80% من الحركة)\n                                          → canary (20% من الحركة)
\n\n

لكن يمكننا أن نكون أذكى: مثلاً، توجيه المستخدمين الذين لديهم كوكيز معينة فقط إلى canary. بهذه الطريقة يمكننا الاختبار على مجموعة محددة (مثل موظفي الشركة).

\n\n

الخطوة 1: إعداد nginx لـ canary

\n\n

Nginx هو الأداة المثالية لـ canary، لأنه يستطيع توزيع حركة المرور على مستوى upstream والتحقق من الرؤوس. إليك مثال على الإعداد:

\n\n
upstream php_stable {\n    server 127.0.0.1:9001;\n}\n\nupstream php_canary {\n    server 127.0.0.1:9002;\n}\n\nserver {\n    listen 80;\n    server_name example.com;\n\n    location / {\n        # إذا كان هناك كوكيز canary=1 - أرسل إلى canary\n        if ($http_cookie ~* "canary=1") {\n            set $upstream "php_canary";\n        }\n\n        # وإلا - عشوائياً 10% من الحركة إلى canary\n        if ($upstream = "") {\n            set $rand $request_id;\n            set $modulo 10;\n            if ($rand ~* "^[0-9a-f]{1}$") {\n                set $upstream "php_canary";\n            }\n            if ($upstream = "") {\n                set $upstream "php_stable";\n            }\n        }\n\n        pro                

المدونات

توصيات الكتب