البنية التحتية والتوسعجاهزون قبل الامتحان: توسيع عقد الويب واستبدالها — NovaCommerce 2
وفّر تجمّعان سعة للتطبيق. الأصعب كان إثبات جاهزية البديل وتصريف القديم والحفاظ على نسخ خدمة متوافقة.
الأصل الخاص وتبديل blue/green جزء من الصورة. خطط للسعة الفعلية وتوافق البيانات وتسليم العمال ومسار تعافٍ جُرّب مسبقًا.
المؤلف
Anichur Rahaman

الجزء 5 من 5
هندسة الأنظمة عالية الحملفي 09:44 يُطلب من المهندسة نشر تصحيح حرف في رسالة قبل بيع تذاكر يبدأ 10:00 ، مع زيادة محاولات الدخول. هذا مشهد تعليمي لا تقرير ميداني. بقيت 16 دقيقة، لكن صغر التغيير وأيقونتي خادم خضراوين لا يثبتان سلامة الإصدار.
السؤال ليس سرعة تبديل النسخة فقط: هل يُكمل العميل المعاملة الصحيحة أثناء تعايش المكونات القديمة والجديدة؟ وهل نستعيد التشغيل بلا فقد العمل أو تكراره؟ أحيانًا يكون تأجيل التصحيح الشكلي إلى ما بعد الذروة هو القرار المسؤول.
المقال الأخير، الجزء 5 من Engineering for High Volume. الأجزاء السابقة: سعة الويب · الطوابير والعمال · طبقة البيانات · الرصد.
يبرز OWASP Top10:2025 فشل التحكم في الوصول وسوء الإعداد وإخفاقات سلسلة التوريد. هو مرجع وعي بالمخاطر، لا تقييم كامل ولا دليل أن جدارًا ناريًا يحلها. ارسم مسارات العملاء والإدارة والاتصالات الخلفية والتكاملات الصادرة قبل شراء طبقة أخرى.
احم حركة الويب العامة عند الحافة ثم قيّد مستمعات الأصل والعناوين البديلة، بما فيها IPv6. صادق مسار الحافة إلى الأصل وتحقق من أسماء المضيف المسموحة. قائمة عناوين مزود كاملة لا تحدد حسابك. مثلًا شهادة سحب الأصل العالمية لدى Cloudflare مشتركة بين الحسابات؛ ربط حسابك أو مضيفك بدقة يتطلب إعدادًا مناسبًا أشد.
احصر قاعدة البيانات والذاكرة المؤقتة في أحمال مخولة، والإدارة في مسار مضبوط وهوية قوية. العنوان الخاص ليس تخويلًا. افصل التطبيقات المتجاورة عمدًا؛ اسم خدمة مشترك يشير لحاوية أخرى قد يسبب خطأ توجيه وكشف بيانات، وليس حادثة ندّعيها هنا. فحوص الصحة والرصد تحتاج وصولًا ضيقًا أيضًا؛ «لا يستقبل العمال أي اتصال» ليست قاعدة عامة.
تفضّل إرشادات TLS الحالية من OWASP الإصدار TLS 1.3 مع TLS 1.2 مضبوط للتوافق الضروري، وتعطيل البروتوكولات المهجورة. تحقق من الشهادات وهوية الطرف في القفزات المعنية. الشبكة الخاصة لا تجعل النص المكشوف آمنًا تلقائيًا؛ وثّق أي استثناء داخل المضيف وفق نموذج الخطر. التشفير لا يستبدل التخويل.
قد تخزن CDN محتوى عامًا مؤهلًا وتوفر حماية مضبوطة، لكنها لا تمتص كل هجوم ولا تجعل الدفع مناسبًا للتخزين المشترك. أبعد الردود الشخصية والمصادقة والسلة والدفع وإنشاء الجلسات عنه، إلا بتصميم آمن مثبت الفصل. اختبر ألا يتلقى زائر جلسة أو بيانات حساب غيره.
اضبط تحديات الروبوتات والحدود مع مراعاة الرحلات الحقيقية والإتاحة والعملاء خلف عنوان مشترك و API/webhook المشروعة. كثرة الدخول من عناوين قليلة إشارة للتحقيق لا دليل مضاربة آلية. طبّق حدودًا مناسبة للحساب والفعل أيضًا. احفظ الأسرار خارج الصور والسجلات، وقيّد اعتماد البناء والنشر، وحدّث الاعتماديات المدعومة وجرّب استعادة نسخ محمية بشكل مستقل.
ابنِ ناتجًا ذا إصدار في مسار مضبوط، واختبره في staging ثم رقّ الناتج الذي اختبرته بدل بناء مستقل على كل عقدة تخدم المستخدمين. سجّل مراجعة المصدر ومدخلات البناء والاعتماديات والموافقة وإصدار الإعداد ومرجع الإصدار. افصل الأسرار وراجع فروق البيئة؛ تطابق الكود لا يساوي تطابق الاختبار والإنتاج.
توثق Docker هوية الصور بالبصمة digest. ثبّت بصمة المستودع والمنصة المقصودتين. للفهرس متعدد المنصات وصوره بصمات مختلفة؛ لا تخلطها بكل معرّف صورة محلي. يلزم بناء ومصدر موثوقان وتحقق أيضًا؛ تستطيع البصمة تعريف صورة خبيثة بدقة. احتفظ بالناتج السابق المتوافق وموارده طوال نافذة التعافي.
التوسعة ثم التقليص: إضافة شكل متوافق، وترحيل آمن، وتبديل الاستخدام، ثم إزالة القديم لاحقًا. عند تغيير phone إلى contact_phone أضف الحقل في ترحيل متدرّب عليه. تأكد من الكتابة المزدوجة المتوافقة لكل كاتب وعامل وتكامل حي قبل الاعتماد عليها؛ يبقى أثناء النشر التدريجي كتّاب قدامى يكتبون الحقل السابق فقط.
املأ البيانات بدفعات محدودة قابلة للاستئناف، وتقدم ثابت وتحديث آمن مع التزامن. لا تستبدل تعديل عميل حديثًا بلقطة قديمة. طابق القيم الفعلية مع التعامل الصحيح مع null ، لا العدد أو عدم فراغ الحقل فقط. راقب الأقفال و WAL وتأخر النسخ والقرص وزمن الأعمال، وأوقف مؤقتًا عند تجاوز حدود السلامة المقاسة.
تميّز وثائق PostgreSQL 18 لـ ALTER TABLE إعادة الكتابة عن القفل. قد تحتاج إضافة سريعة لحقل إلى قفل وتنتظر معاملة أخرى. قبول null لا يعني غياب الأقفال. جرّب العبارة والحمل الحقيقيين واضبط مهل القفل والتنفيذ وخطة توقف وتعافٍ.
مثال حسابي:2,400,000 صف÷5,000=480 دفعة. بافتراض 2 ثانية لكل دفعة، المعالجة 960 ثانية، أي 16 دقيقة. لا يشمل الانتظار والتقييد وإعادة المحاولة والتحقق؛ ليس توقع اكتمال ولا برهان عدم تأثر العميل. بدّل القراءة بعد إثبات التقارب، وقلّص في نافذة معتمدة لاحقة بعد زوال اعتماديات الويب والعمال والوظائف و API وانتهاء نافذة التراجع الموعودة.
تمنح عقدتان تكرارًا كافيًا فقط إذا تحملت الباقية العمل المطلوب في حالات الفشل المتفق عليها. مثال تعليمي: ذروة 900 طلب/ثانية وعقدة تتحمل 550 للمزيج المختبر نفسه. سحب واحدة من اثنتين يترك عجز 350 طلب/ثانية. اللون الأخضر لا يكفي. ثلاث قد تترك 1,100 عند سحب واحدة، لكن اختناقات الاعتماديات وهامش الأمان ما زالا بحاجة لاختبار.
توضح إرشادات تحديث Kubernetes ضوابط التوفر والسعة الإضافية، وتحتاج أي منصة قرارات مماثلة صريحة. شغّل المرشحة عند توفر السعة، وافحص الجاهزية والسلوك التجاري الممثل، وأوقف العمل الجديد للعقدة المسحوبة وأمهل الجاري حدًا مختبرًا. قد ينجح فحص الصحة والدفع معطل. الجاهزية والإنهاء المتدرج وانتشار توجيه الموازن فحوص منفصلة.
لا تُخفِ كل انقطاع بإعادة المحاولة. توثق NGINX المعالجة الخاصة للطلبات التي قد يتكرر أثرها عند إعادة إرسالها. إعادة دفع مجهول النتيجة قد تكرر الأثر إن لم يمنع العقد الكامل بين التطبيق والمزود ذلك. احفظ هوية العملية واستعلم عن المجهول وتعافَ بحدود. عالج الطلبات الطويلة و WebSockets وتوافق موارد المتصفح والنسخ. وقد تؤثر المرشحة في بيانات مشتركة أو خدمات أخرى قبل المرور العام.
لا تحتاج عادة إلى إفراغ الطابور كله لتبديل العمال. أوقف العمليات القديمة عن أخذ وظائف جديدة، وأمهل الجاري فترة مختبرة، ثم شغّل بدائل متوافقة تحت إشراف. أبق حمولة الوظيفة ومعالجها متوافقين خلال نافذة النسخ المدعومة. تراجع قاعدة البيانات لا يسحب رسالة أُرسلت ولا يعكس مبلغًا خُصم.
تشرح وثائق طوابير Laravel 13 إعادة التشغيل المتدرجة والإشراف وعلاقة مهلة التنفيذ بإعادة المحاولة. تحقق أن إشارات الإعادة والتوقف المؤقت تعمل؛ يمكن تعطيل استقصائها. وفّر مهلة إنهاء كافية واجعل مهلة التنفيذ أقصر من حد إعادة المحاولة/الرؤية المطبق بهامش. صمّم آثار الوظائف لتحمل التسليم المتكرر. قتل العملية لا يثبت أنها لم تنفذ شيئًا.
نسّق ملكية المجدول أو الأقفال المشتركة قبل التبديل. تشرح وثائق جدولة Laravel ضوابط الخادم الواحد والتداخل مع متطلبات الذاكرة المشتركة. تشغيل المجدول «أخيرًا» وحده لا يمنع التكرار؛ ومجدول واحد لا يجعل الآثار مرة واحدة بالضبط. راقب التشغيل المفقود والأقفال القديمة والمهام الطويلة أو دون الدقيقة، وأزل التكرار على مستوى العملية عند الحاجة.
يبقي blue/green نسخة نشطة ومرشحة معًا ويبدل التوجيه بعد القبول. التبديل الواقعي يشمل صلاحية الإعداد والجاهزية والانتشار والتفريغ؛ لا وعد عام بتراجع في ثانية. احتفظ بموارد المتصفح القديم وتحقق من توافق النسختين مع عقود الجلسة والذاكرة و API المشتركة.
اكتب قرار الفشل قبل التبديل: مؤشرات العمل والخطأ والزمن وعمر الطابور التي توقف الترقية، وصاحب القرار، والنسخة المتوافقة، وكيفية التعامل مع البيانات والآثار الخارجية. حدد نافذة رصد مقاسة. تجربة 20% أو خمس دقائق ليست كافية دائمًا؛ قد لا تقع رحلة مهمة قليلة الاستخدام خلالها.
قد يجعل تغيير مخطط هدّام البرنامج القديم غير صالح. إرجاع الكود لا يلغي استردادًا مكتملًا أو يعكس كل تعبئة بيانات أو يستعيد المحذوف. اختر إصلاحًا للأمام أو تراجعًا متوافقًا أو تعافي بيانات متدرّبًا عليه بحسب الحالة. نسخة dump حديثة ليست إثبات تعافي العمل؛ انظر دليل اختبار التعافي. استعادة الإنتاج قد تفقد معاملات صحيحة لاحقة وتحتاج مطابقة.

الجدول قائمة أدلة لا ضمان. نفّذ اختبارات كاملة ممثلة ومأذونة مع معالجة آمنة للدفع والبريد والشحن، وطابق نتائج الأعمال لا حالة HTTP فقط. سمّ المشغل والتصعيد. اختبر الانكشاف على بنية مأذون لك بها فقط، واحجب الأسرار في الأدلة بدل نسخها إلى تذكرة الإصدار.
في 09:44 يستطيع تصحيح الحرف الانتظار إذا نقص دليل التوافق أو السعة أو التعافي. إصلاح أمني عاجل حقًا يحتاج قرار خطر صريحًا وطريقًا مُجرّبًا، لا إعفاء تلقائيًا من تجميد التغيير. الطبقات والتقنيات تجعل القرار قابلًا للفحص. «بلا توقف» هدف نقيسه ضمن نطاق محدد، لا صفة تمنحها عقدتان أو تبديل لون.
| البوابة | الدليل المحفوظ | سبب التوقف |
|---|---|---|
| الانكشاف | قبول المضيف والحافة المقصودين ورفض الطريق غير المخوّل | أصل بديل أو طريق بيانات/إدارة مكشوف |
| الناتج والإعداد | بصمة ومنصة موثوقتان مختبرتان وإعداد مراجع | بناء مجهول أو سر مسرب أو فرق غير آمن |
| المخطط والبيانات | توافق كل الكتّاب وتطابق القيم | قفل أو انحراف أو تغيير هدّام أو تعبئة ناقصة |
| السعة | اختبار حالة السحب/الفشل بالمزيج المطلوب | السعة المتبقية أو الاعتمادية لا تتحمل |
| العمال والمجدول | وظائف متوافقة وتسليم متدرج وملكية/أقفال | أثر مجهول أو عمل متكرر أو مفقود |
| التعافي والقبول | صاحب قرار وفحوص عمل وتعافٍ متوافق | لا حالة قابلة للتعافي أو مطابقة للآثار |
مراجعة 5 نوفمبر 2026. Anichur Rahaman منشئ StoreConsole. المشاهد والمعدلات والأوقات تعليمية، لا معايير أداء أو ادعاء لبنية إنتاج مدققة.
السلاسل
هندسة الأنظمة عالية الحملعن الكاتب
Anichur Rahaman
تابع القراءة