الجواب القصير. نكتب أولاً رقمين لكل نظام: كم دقيقة من البيانات نقبل فقدانها، وكم من الوقت نقبل التوقف. لتطبيق تسيير نكتب افتراضياً خمس عشرة دقيقة وساعتين. ثم نبني ما يحققهما: الكود والإعداد في مستودع خارج الخادم لإعادة إنشاء خادم جديد في دقائق؛ القاعدة بنسخة منتظمة وأرشفة مستمرة لسجلاتها إلى موقع آخر للعودة إلى أي دقيقة؛ الملفات في تخزين مرقَّم على موقع ثانٍ بفترة لا يمكن خلالها محو شيء حتى من مدير؛ الأسرار في مدير، والحسابات والنطاق باسم الشركة، وشخصان يعرفان؛ وتمرين استعادة كامل كل شهر على خادم فارغ عند مستضيف آخر، مؤقَّت، مدوَّن، يقرؤه المسيّر. نسخة احتياطية لم تُستعد قط ليست نسخة احتياطية.
هذا الدليل موجّه إلى المسيّر الذي خسر يوم مبيعات من قبل، وإلى المؤسس المقيم في فرنسا الذي لن يعرف إلا بالهاتف أن الخادم مات، وإلى مسؤول الإعلام الآلي الذي يجب أن يجيب عن «وماذا لو…». لا يعيد أين توضع الخوادم، الموصوف في دليل الاستضافة، ولا كيف يُستلم تطبيق اختفى مقدّم خدمته، الموصوف في الدليل المخصص؛ بل يصف ما يُبنى كي يكون العطل صباح ثلاثاء عادياً، ويمدّ صفحتنا عن السحابة والبنية التحتية.
ما تقوله الوثائق
يمكن للقاعدة أن تعود إلى الدقيقة، لكن ليس بأي نسخة احتياطية. تصف وثائق PostgreSQL الأرشفة المستمرة لسجلات المعاملات مع نسخة أساس: «تدعم هذه التقنية الاستعادة إلى نقطة زمنية: يمكن استعادة القاعدة إلى حالتها في أي وقت منذ أخذ نسخة الأساس». وتحذّر أيضاً من أن النسخ المنطقية، تلك التي تُؤخذ كل ليلة بتصدير، «لا تنتج نسخاً على مستوى نظام الملفات ولا يمكن استعمالها في حل أرشفة مستمرة»، وأن المطلوب «تسلسل مستمر من ملفات السجل المؤرشفة» يعود إلى بداية النسخة على الأقل، وأنكم «مدعوّون إلى مراقبة عملية الأرشفة». وما يفرضه ذلك: يحتفظ التصدير الليلي بمكانه، لكن ما يحقق هدف خمس عشرة دقيقة هو الأرشفة المستمرة إلى موقع آخر يراقبها تنبيه حين تتوقف.
يمكن للملفات أن تصير مستحيلة المحو حتى منكم. تصف وثائق تخزين الكائنات عند مزوّد كبير قفلاً «يُكتب مرة ويُقرأ مرات»: في وضع الامتثال «لا يمكن لأي مستعمل، بما فيه المستعمل الجذر للحساب، أن يكتب فوق نسخة كائن محمية أو يحذفها» خلال فترة احتفاظ لا يمكن تقصيرها؛ وتذكر كاستعمال «نافذة استرداد قابلة للضبط ضد برامج الفدية أو الحذف العرضي». وما يفرضه ذلك: نسخ الملفات والقاعدة مرقَّمة ومقفلة لمدة مكتوبة، ثلاثين يوماً مثلاً، ومهاجم استولى على الخادم لا يستطيع محوها؛ ولا مدير مستعجل.
والقاعدة التي تكررها وكالات الأمن في ثلاثة أرقام: ثلاث نسخ، على وسيطين، إحداها في مكان آخر؛ ونضيف كلمة رابعة، غير قابلة للتعديل، وخامسة، مستعادة. وما لم نجده: إحصاء علني لخسائر البيانات التي تتكبدها الشركات في الجزائر، ولا لمتوسط وقت الاستئناف؛ وما نراه في التطبيقات التي نستلمها نسخة ليلية على الخادم نفسه في معظم الحالات، واستعادة لم تُجرَّب قط في كلها تقريباً، ونقولها ملاحظةً.
يوم يموت الخادم، على الساعة
الاستئناف لا يُفهم على مبدأ بل على صباح، دقيقة بدقيقة.
9:14، يموت قرص خادم الإنتاج. 9:16، يصل التنبيه إلى هاتفين لا واحد. 9:20، يُتخذ القرار ويُفتح مستند الاستئناف: يقول من يفعل ماذا، بأي ترتيب، وأين النسخ. 9:25، يوجد خادم جديد عند المستضيف الاحتياطي، أُنشئ من مستودع الكود الذي يصف الخادم؛ لا أحد يثبّت شيئاً يدوياً. 9:40، تُستعاد القاعدة إلى نقطة 9:13: آخر نسخة أساس مع السجلات المؤرشفة باستمرار حتى الدقيقة التي تسبق العطل. دقيقة واحدة من البيانات مفقودة، لهدف مكتوب خمس عشرة.
10:05، عادت الملفات والصور والوثائق والتصديرات من النسخة المرقَّمة على الموقع الثاني؛ وهي الخطوة الأطول، ولهذا تُقاس كل شهر. 10:20، يشير اسم النطاق إلى الخادم الجديد. 10:30، تجتاز اثنتا عشرة عملية تحقق: طلبية، فاتورة، دفعة، تصدير، تسجيل دخول. 10:35، يعمل الزبائن من جديد. ساعة وإحدى وعشرون دقيقة من التوقف لهدف ساعتين. لم يُرتجل شيء: كل خطوة أُجريت في تمرين الشهر السابق، والمؤسس في ليون تابع الصباح على المستند نفسه مع الفريق. والمثال مبني من حالات حقيقية؛ والهدفان هما ما نكتبه افتراضياً.
«نسخة احتياطية لم تُستعد قط ليست نسخة احتياطية؛ التمرين يجعلها حقيقية، والتقرير يجعلها قابلة للتحقق.»
ما يلزم للنجاة من الخادم، في خمس طبقات
خلف ذلك الصباح خمس طبقات، وواحدة فقط تثبت أن الأربع الأخرى موجودة.
الكود والإعداد: كود التطبيق ووصف الخادم والإعدادات وسكريبتات النشر تعيش في مستودع خارج الخادم؛ وخادم جديد يُعاد إنشاؤه من هذا المستودع في دقائق، ولا شيء «يُثبَّت يدوياً» مرة، كما يصف دليل التسليم. قاعدة البيانات: نسخة أساس منتظمة وأرشفة مستمرة للسجلات إلى موقع آخر للعودة إلى أي دقيقة؛ ونسخة متماثلة إن اقتضى النشاط عدم التوقف أبداً. الملفات: صور ووثائق وتصديرات في تخزين كائنات مرقَّم على موقع ثانٍ، بفترة لا يمكن خلالها محو شيء.
الأسرار والوصول: كلمات المرور والمفاتيح والشهادات في مدير أسرار، لا على الخادم ولا في الكود أبداً؛ حسابات المستضيف والنطاق باسم الشركة، مع شخصين يعرفان، كي لا يأخذ الخادم الميت ولا مقدّم الخدمة المختفي شيئاً؛ وهو الانضباط الموصوف في دليل الحقوق. التمرين والمراقبة: استعادة كاملة كل شهر على خادم فارغ، مؤقَّتة ومدوَّنة، وتنبيهات إن غابت نسخة أو توقفت الأرشفة. وهي الطبقة الوحيدة التي تثبت وجود الأربع الأخرى: نسخة احتياطية لم تُستعد قط فرضية.
ست طرق للنسخ الاحتياطي، وما نفقده فعلاً
«لدينا نسخ احتياطية» تغطي ست حقائق مختلفة جداً، والخادم الذي يموت في الثالثة مساءً يفصل بينها.
النسخة المنطقية الليلية على الخادم نفسه تموت مع القرص: نفقد كل شيء، ونعود من نسخة قديمة وُجدت صدفة، أو لا نعود. النسخة المنطقية الليلية المرسلة إلى مكان آخر تفقد اليوم، المبيعات منذ الثانية فجراً، وتعود في بضع ساعات إن عرف أحد كيف يستعيد وكانت النسخة قابلة للقراءة؛ وهي الأكثر انتشاراً بين الطرق الصادقة. نسخة الأساس مع السجلات المؤرشفة باستمرار تفقد بضع دقائق على الأكثر وتعود في أقل من ساعة إن أُجري التمرين؛ وهي السطر الوحيد الذي يحقق هدف خمس عشرة دقيقة.
لقطة المستضيف وحدها لا تفقد شيئاً ما دام المستضيف موجوداً والحساب مفتوحاً، وهذا بالضبط ما لم يعد موجوداً في اثنين من أعطال الدليل الستة. الملفات المنسوخة بلا نسخ تفقد كل ملف حُذف أو شُفّر قبل النسخة التالية، ونسخة الأمس قد تكون هي نفسها شُفّرت. كل ذلك بلا تمرين: الفقدان مجهول، والأجل مجهول، ويوم العطل نعرف؛ وهو السطر الأكثر شيوعاً على الإطلاق، وسبب هذا الدليل.
تمرين الاستعادة الشهري، مؤقَّت ومدوَّن
التمرين هو القطعة التي تحوّل النسخ الاحتياطية إلى استئناف، ويُقرأ في ثمانية أسطر.
أول ثلاثاء من الشهر، على خادم فارغ عند مستضيف آخر، يجريه الشخص الذي لم يكتب الإجراء. خادم يُنشأ من المستودع، أربع دقائق. الأسرار يسترجعها الشخص الثاني، ثلاث: لم تكن أي كلمة مرور على الخادم الميت. القاعدة تُستعاد إلى النقطة المختارة، ثماني عشرة: نسخة أساس مع سجلات حتى 14:02 أمس، والنقطة اعتباطية وتتغير كل شهر. الملفات تُستعاد من الموقع الثاني، اثنتان وعشرون: ضعف الشهر الماضي، والفارق مفتوح. التطبيق يُشغَّل، ثلاث. اثنا عشر تحققاً، تسع. اسم النطاق يُحوَّل في الاختبار ثم يُعاد، دقيقتان. تقرير يُكتب ويُوقَّع، خمس.
ست وستون دقيقة لهدف مئة وعشرين: محقَّق. لكن التقرير يقول أيضاً ما تضاعف، ولماذا سنعرفه قبل التمرين المقبل؛ هكذا نعلم أن الملفات كبرت، أو أن الموقع الثاني غيّر سرعته، أو أن خطوة يدوية تسللت إلى الإجراء. يقرأ المسيّر الحكم دون أن يفهم سطراً واحداً من الثمانية، وهذا مقصود؛ ويتلقاه المؤسس في فرنسا بالبريد في اليوم نفسه. وهو المبدأ نفسه كما في القبول عن بُعد: لا نصدّق ما لم نرَه يُفعل.
ستة أعطال، وما يجعل الاستئناف ممكناً
ستة أعطال رأيناها أو استلمناها، ولكل منها ما جعل، أو كان سيجعل، الاستئناف ممكناً.
القرص يموت: خادم يُعاد إنشاؤه من المستودع، قاعدة تُستعاد إلى نقطة العطل، ملفات من الموقع الثاني؛ وهو صباح الشكل الأول. الاستعلام الخاطئ: سكريبت يمحو ثلاثة آلاف زبون في 15:12، ولا أحد يراه قبل 17:00؛ نستعيد القاعدة إلى نقطة 15:11 على خادم مجاور، ونعيد حقن الزبائن، وسجل التدقيق يقول بالضبط ماذا؛ وهي الحالة التي تساوي فيها الأرشفة المستمرة أكثر، لأن النسخة الليلية كانت ستفقد اليوم. برنامج الفدية: الخادم والنسخ المرفقة به تُشفَّر في الليلة نفسها؛ ونسخ الموقع الثاني، المرقَّمة والمقفلة ثلاثين يوماً، لا يمكن تشفيرها، والخادم يُعاد إنشاؤه نظيفاً من المستودع.
مقدّم الخدمة المختفي: كانت لديه الوصولات وكلمات المرور والمستودع؛ إن كان المستودع والحسابات والنطاق باسم الشركة، والأسرار في مدير، وشخصان يعرفان، فالاستئناف إزعاج لا كارثة؛ وإلا يبدأ الدليل المخصص. حساب المستضيف المغلق: بطاقة مرفوضة عند التجديد، حساب معلَّق، لقطات غير متاحة؛ النسخ تعيش عند مزوّد ثانٍ، والاستئناف يُجرى هناك تماماً كما في التمرين. الملف المحذوف: موظف يحذف مجلد العقود المشترك والمزامنة تنشر الحذف؛ النسخ محفوظة، والمجلد يعود إلى تاريخ الأمس في دقائق. واثنان من الأعطال الستة ليسا تقنيين أبداً، وهما الأكثر كلفة.
«اثنان من الأعطال الستة ليسا تقنيين أبداً، مقدّم الخدمة والحساب؛ وهما الأكثر كلفة.»
رأيناه في مكان آخر: الوثائق المرجعية، وما ينتقل
مصدران يقولان الجوهر. تقول وثائق PostgreSQL إن الأرشفة المستمرة للسجلات تتيح العودة إلى أي لحظة منذ نسخة الأساس، وإن التصدير المنطقي لا يكفي، وإن الأرشفة تُراقَب؛ وما ينتقل هو هدف خمس عشرة دقيقة والتنبيه حين تتوقف الأرشفة. وتقول وثائق قفل الكائنات إن في وضع الامتثال لا أحد، ولا حتى الحساب الجذر، يستطيع محو نسخة خلال احتفاظها، وتسمّي برنامج الفدية حالة استعمال؛ وما ينتقل هو النسخة غير القابلة للتعديل ثلاثين يوماً عند مزوّد ثانٍ.
وما لا تقوله هذه المصادر: كم دقيقة تقبل شركتكم فقدانها، وكم ساعة تقبل الانتظار؛ هذان الرقمان لكم، يُقرَّران في الأسبوع الأول، ويقرران كل الباقي.
قواعد تطبيق ينجو من خادمه
ست قواعد تُكتب في الأسبوع الأول. رقمان لكل نظام، أقصى فقدان وأجل استئناف، يوقّعهما المسيّر. ثلاث نسخ، وسيطان، واحدة في مكان آخر، والنسخة في المكان الآخر مرقَّمة وغير قابلة للتعديل لمدة مكتوبة. القاعدة تُؤرشَف باستمرار إلى موقع آخر، وتنبيه يرن حين تتوقف الأرشفة. الخادم يُعاد إنشاؤه من المستودع؛ لا شيء يُثبَّت يدوياً. الأسرار والحسابات والنطاق خارج الخادم، باسم الشركة، يعرفها شخصان. تمرين كامل كل شهر، مؤقَّت، مدوَّن، يجريه شخص آخر.
قاعدة سابعة تخص عرض السعر: «نسخ احتياطية يومية» ليس متطلباً بل جملة؛ المتطلب يُكتب «أقصى فقدان وأجل استئناف مكتوبان لكل نظام؛ نسخة أساس وأرشفة مستمرة للسجلات إلى موقع ثانٍ مع تنبيه؛ ملفات في تخزين مرقَّم على موقع ثانٍ بقفل ثلاثين يوماً؛ خادم قابل لإعادة الإنشاء من المستودع؛ أسرار في مدير، حسابات ونطاق باسم الزبون، حاملان؛ مستند استئناف؛ تمرين استعادة كامل شهري على خادم فارغ عند مستضيف آخر، مؤقَّت، تقرير مسلَّم»، ويُتحقَّق منه كما يوصي دليل دفتر الشروط. وعرض السعر الذي يكتب «نسخ احتياطي آلي مشمول» بلا رقم فقدان ولا أجل كتب السطر السادس من الجدول.
ست شركات، والرقم الذي كتبته
ست شركات نجهّزها كثيراً، ولكل منها الرقمان المكتوبان وما يحققهما.
- المتجر المُدار من فرنسا، الموصوف في الدليل المخصص. خمس عشرة دقيقة وساعتان؛ يتلقى المؤسس تقرير التمرين كل شهر ويعرف، من ليون، أن صندوق الجزائر سيعود.
- الصندوق في المحل، الموصوف في الدليل المخصص. يواصل التحصيل بلا خادم بفضل وضع عدم الاتصال في دليل المزامنة؛ فلاستئناف الخادم أربع ساعات، لكن صفر دقيقة من مبيعات مفقودة.
- المرقّي العقاري، الموصوف في الدليل المخصص. عقود المقتنين ووصولاتهم في التخزين المرقَّم المقفل سنة؛ لا ملف موقَّع يمكن أن يختفي.
- عيادة طب الأسنان، الموصوفة في الدليل المخصص. خمس دقائق وساعة لملفات المرضى؛ ويُجرى التمرين يوم سبت حين تكون العيادة مغلقة.
- منصة SaaS، الموصوفة في الدليل المخصص. هدف لكل زبون مكتوب في العقد، والتمرين يستعيد زبوناً واحداً في كل مرة لإثبات العزل.
- الشركة التي تهاجر، الموصوفة في دليل استعادة البيانات. يُجرى تمرين الاستعادة الأول قبل التحويل، لأن أسبوع التحويل أسوأ وقت لاكتشاف أننا لا نعرف الاستعادة.
تقويم 2027
التقويم تقويم تطبيق يُجعل قادراً على النجاة من خادمه في ثمانية أسابيع، الأول بلا بايت منسوخ.
الأسبوع 0 إلى 1 يجري الجرد ويكتب الرقمين: ما يوجد وأين، أقصى فقدان وأجل استئناف لكل نظام، يوقّعهما المسيّر. الأسبوعان 1 إلى 3 يعالجان القاعدة: نسخة أساس وأرشفة مستمرة للسجلات إلى موقع آخر، وأول استعادة إلى الدقيقة مُتحقَّق منها. الأسبوع 3 إلى 4 يعالج الملفات: تخزين كائنات مرقَّم على موقع ثانٍ، فترة عدم قابلية التعديل، اختبار استعادة مجلد. الأسبوع 4 إلى 5 يجعل الخادم قابلاً لإعادة الإنشاء من المستودع، ويضع الأسرار في مدير، وينقل الحسابات والنطاق إلى اسم الشركة بحاملين.
الأسبوع 5 إلى 6 يجري التمرين الكامل الأول على خادم فارغ عند مستضيف آخر، مؤقَّتاً، ويصحح الإجراء. الأسبوعان 6 إلى 8 يثبّتان التمرين الشهري، أول ثلاثاء، والتنبيهات إن غابت نسخة، والتقرير الذي يقرؤه المسيّر. وتدخل كلفة هذه النسخ والتمرين في الميزانية السنوية الموصوفة في دليل حياة التطبيق؛ وحين يعمل نموذج ذكاء اصطناعي على خوادمكم يضيف دليل النشر الخاص نسخه إلى التمرين نفسه.
ما يُفشل استئنافاً
عمليات الاستئناف التي رأيناها تفشل فشلت دائماً تقريباً لأحد هذه الأسباب.
- النسخة الاحتياطية على الخادم نفسه. تموت مع القرص، ونكتشف ذلك في ذلك الصباح.
- لم تُستعد قط. النسخة موجودة، وهي غير قابلة للقراءة أو ناقصة أو مشفَّرة، ولا أحد كان يعلم.
- كلمات المرور على الخادم الميت. القاعدة مستعادة، ولا أحد يستطيع الاتصال بها.
- حامل واحد. هو في إجازة، أو هو مقدّم الخدمة المختفي.
- نسخ قابلة للمحو. شفّرها برنامج الفدية مع الخادم.
- الخادم المثبَّت يدوياً. ثلاثة أيام لإعادة بنائه، ولا أحد يتذكر كل شيء.
- لا رقم مكتوب. كان لكل واحد هدف مختلف في ذهنه، واستغرق الاستئناف ما استغرق.
أسئلة شائعة
الأسئلة التي نتلقاها من مسيّرين ومؤسسين ومسؤولي إعلام آلي.
- لدينا نسخة احتياطية كل ليلة، أليس ذلك كافياً؟
- يتوقف على رقمين أنتم وحدكم من يكتبهما: كم دقيقة من البيانات تقبلون فقدانها، وكم ساعة من التوقف. النسخة الليلية تفقد حتى يوم وتعود في بضع ساعات، إن كانت في مكان غير الخادم وإن كان أحد قد استعادها من قبل. ولتحقيق خمس عشرة دقيقة تلزم الأرشفة المستمرة لسجلات القاعدة؛ ولتحقيق ساعتين يلزم تمرين فعل ذلك من قبل.
- ما فائدة تمرين الاستعادة إن كانت النسخ آلية؟
- إثبات أنها تُستعاد، وفي كم من الوقت. معظم إخفاقات الاستئناف التي نراها تأتي من نسخ غير قابلة للقراءة أو ناقصة أو مشفَّرة أو كلمات مرور ضائعة، ولا أتمتة تكتشف ذلك: فقط استعادة كاملة، على خادم فارغ، من شخص لم يكتب الإجراء، تُظهره. والتقرير المؤقَّت هو أيضاً ما يتيح للمسيّر قراءة حكم دون فهم التقنية.
- كيف نحتمي من برنامج فدية يشفّر النسخ الاحتياطية أيضاً؟
- بنسخ لا يستطيع بلوغها: على موقع ثانٍ، عند مزوّد آخر، مرقَّمة، ومقفلة لمدة مكتوبة لا يستطيع خلالها أحد، ولا حتى حساب المدير، محوها أو الكتابة فوقها. ويُعاد عندها إنشاء الخادم المخترَق نظيفاً من مستودع الكود، وتعود القاعدة والملفات من النسخ المقفلة.
- ماذا يحدث إن اختفى مقدّم الخدمة بالوصولات؟
- إن كان مستودع الكود وحسابات المستضيف والنطاق والنسخ باسم شركتكم، والأسرار في مدير، وشخصان عندكم يعرفان، فالاختفاء إزعاج: مقدّم خدمة آخر يستلم من المستودع والنسخ. وإن كان كل شيء باسم مقدّم الخدمة فهذه قصة أخرى، ويُطبَّق دليل التطبيق المحجوز.
- كم من البيانات نفقد فعلاً؟
- مع الأرشفة المستمرة لسجلات القاعدة، بضع دقائق على الأكثر: نعود إلى النقطة التي تسبق العطل مباشرة. ومع نسخة ليلية، حتى يوم. وللملفات، تتيح النسخ المحفوظة العودة إلى الأمس، أو إلى الساعة السابقة إن سمح التخزين. ويُكتب الرقمان لكل نظام، لأن الصندوق والكتالوج ليس لهما التحمل نفسه.
- كم من الوقت لوضع كل ذلك؟
- ثمانية أسابيع: واحد للجرد والرقمين، اثنان للقاعدة وأول استعادة لها إلى الدقيقة، واحد للملفات، واحد للخادم القابل لإعادة الإنشاء والأسرار والحسابات، واحد للتمرين الكامل الأول، اثنان لتثبيت التمرين الشهري والتنبيهات. وفي تطبيق قائم تكفي الأسابيع الثلاثة الأولى غالباً للانتقال من «لدينا نسخ احتياطية» إلى «استعدنا».