ماذا بعد الإطلاق؟ الصيانة التي تغيب عن الميزانية
ما يحتاجه الموقع أو النظام من عمل بعد تسليمه، والفرق بين الصيانة والتطوير، وما يجب أن ينص عليه عقد الدعم.
أُطلق الموقع في آذار. استلم المطوّر أجره، وانتهى اجتماع التسليم بودّ، وعاد كل واحد إلى عمله. وفي تشرين الثاني يتوقف نموذج «اتصل بنا» عن إيصال الرسائل، أو يعرض المتصفح صفحة تحذير مكان الصفحة الرئيسية، ورقم المطوّر لا يجيب. لم يقع في تلك الأشهر الثمانية حادث يُذكر. كل ما حدث أن مكوّنًا بقي بلا تحديث، أو أن إشعار تجديد وصل إلى عنوان بريد لا يقرؤه أحد.
البرمجيات تُشغَّل وتحتاج إلى رعاية ما دامت تعمل، وليست شيئًا يُنجَز مرة ثم يُترك. في هذا المقال نعدّد ما يحتاجه الموقع أو النظام من عمل بعد إطلاقه، ونبيّن أين تنتهي الصيانة ويبدأ التطوير، وما الذي يجب أن يُكتب في عقد الدعم.
عمل يستمر حتى لو لم يتعطل شيء
ستة أنواع من العمل تستمر بعد الإطلاق وإن لم يبلّغ أحد عن عطل.
- التحديثات الأمنية. المنصة التي بُني عليها الموقع، وإضافاتها أو مكتباتها البرمجية، وبرمجيات الخادم من تحتها، تصدر لها كلها إصلاحات لثغرات تُكتشف تباعًا. والموقع الذي يبقى على إصدارات يوم الإطلاق يزداد اختراقه سهولة كلما مرّ الوقت.
- التجديدات. اسم النطاق وشهادة SSL تنتهي صلاحية كلٍّ منهما في تاريخ محدد. لا بد من شخص مسؤول عن هذين التاريخين، ولا بد أن تصل رسائل التذكير إلى عنوان بريد هناك مَن يقرؤه.
- النسخ الاحتياطية، واختبار استرجاعها. النسخة الاحتياطية التي لم يسترجعها أحد مجرد افتراض. وفي مقالنا النسخة الاحتياطية التي لم تجرّبها قط تمرين قصير لذلك.
- مراقبة عمل الموقع. برنامج يفحص الموقع كل بضع دقائق وينبّه شخصًا مسؤولًا حين يتوقف. ومن دونه يكون عملاؤك أول مَن يكتشف العطل.
- تغييرات يفرضها غيرك. بوابة دفع توقف إصدارًا قديمًا من واجهتها البرمجية، أو خدمة مراسلة تغيّر طريقة إرسال الرسائل. القرار ليس قرارك في الحالتين، لكنّ كلًا منهما يستدعي عملًا من جهتك قبل موعد حدّده غيرك.
- تعديلات صغيرة على المحتوى. رقم هاتف جديد، أو فرع جديد، أو موظف غادر وما زال اسمه في صفحة الفريق.
الصيانة والتطوير عملان مختلفان
الصيانة تُبقي النظام يؤدي ما يؤديه اليوم، والتطوير يجعله يؤدي شيئًا جديدًا. تحديث المنصة وتجديد الشهادة واسترجاع نسخة احتياطية صيانة. وإضافة الدفع الإلكتروني أو تقرير جديد أو لغة ثانية تطوير.
وأغلب الخلافات بين الشركة ومطوّرها تبدأ حيث يختلط الاثنان. العميل يظن أن المبلغ الشهري يشمل «التعديلات»، والمطوّر يظن أنه يشمل إبقاء الموقع يعمل. ثم يصل طلب بإضافة نموذج حجز جديد، فينتظره طرف بلا مقابل ويرسل الآخر عرض سعر. وكلاهما يستند إلى الجملة الغامضة نفسها في العقد.
والحل أن يُكتب ما يدخل في كلٍّ منهما، وأن يُتفق على طريقة تسعير العمل الجديد قبل أن يصل أول طلب. وتبقى حالة ملتبسة تستحق بندًا خاصًا بها: التغييرات التي تفرضها أطراف أخرى. فاتفق مع المطوّر مسبقًا: هل يُعدّ التكيّف مع واجهة جديدة لبوابة الدفع صيانة أم عملًا يُسعَّر على حدة؟
ما يجب أن ينص عليه عقد الدعم
- ما يشمله وما لا يشمله. قائمة واضحة: التحديثات، والنسخ الاحتياطية، والمراقبة، والتجديدات، وقدر محدد من التعديلات الصغيرة كل شهر.
- كيف تُبلّغ عن مشكلة، وخلال كم من الوقت يأتيك الرد. قناة واحدة، كنظام تذاكر أو عنوان بريد مشترك، ومدة للرد على الحالات العاجلة وأخرى للحالات العادية. أمّا الترتيب الذي يقوم على الاتصال بهاتف شخص واحد فيتعطل يوم يسافر ذلك الشخص.
- مَن بيده كل كلمة مرور وكل حساب. النطاق، والاستضافة، وحساب المدير في لوحة التحكم، ومستودع الشيفرة، وحسابات متاجر التطبيقات. يجب أن تكون صلاحية المالك في كل واحد منها بيد شركتك. وعن الشيفرة تحديدًا اقرأ مقالنا عن المكان الذي تُحفظ فيه شيفرتك.
- كيف يُسعَّر العمل الجديد. كتابةً، وبسعر محدد، قبل أن يبدأ.
- تقرير دوري قصير. مرة في الشهر تكفي: ما ثُبّت من تحديثات، وما أُخذ من نسخ احتياطية وما اختُبر منها، ومدد التوقف إن وُجدت، والطلبات المنجزة.
- ماذا يحدث إذا أنهيتما التعامل. تُسلَّم الشيفرة والبيانات والحسابات، بصيغة محددة وخلال عدد محدد من الأيام.
جدول لمقارنة العروض
قارن كل عرض يصلك بهذا الجدول. العمود الأوسط يبيّن توزيعًا معقولًا للعمل، وإذا ترك العرض صفًا بلا جواب فاسأل عنه.
| البند | مَن يتولاه | متى |
|---|---|---|
| التحديثات الأمنية للمنصة ومكوّناتها | مقدّم الخدمة | شهريًا، وقبل ذلك إذا صدر إصلاح عاجل |
| النسخ الاحتياطية للملفات وقاعدة البيانات | مقدّم الخدمة | يوميًا لموقع يستقبل طلبات أو يحفظ سجلات |
| اختبار الاسترجاع | مقدّم الخدمة، ويُطلعك على النتيجة | بضع مرات في السنة |
| مراقبة عمل الموقع | مقدّم الخدمة | باستمرار، عبر برنامج |
| تجديد النطاق | الحساب باسمك، ومقدّم الخدمة يذكّرك | قبل كل تاريخ انتهاء |
| تجديد شهادة SSL | مقدّم الخدمة | تلقائيًا، قبل كل انتهاء |
| التكيّف مع تغييرات بوابة الدفع أو خدمة المراسلة | يُتفق عليه مسبقًا: مشمول أم يُسعَّر | كلما أعلنت الجهة المعنية عن تغيير |
| التعديلات الصغيرة على المحتوى | موظفوك من لوحة التحكم، أو مقدّم الخدمة | عند الحاجة |
| التقرير المكتوب | مقدّم الخدمة | شهريًا |
| مراجعة مَن يملك بيانات الدخول | أنت | كلما غادر أحد الموظفين |
علامات تحذير في وضعك الحالي
- بيانات الدخول عند المطوّر وحده. لو توقف عن الرد لما استطعت تجديد النطاق ولا نقل الموقع.
- لا أحد يعرف متى استُرجعت نسخة احتياطية آخر مرة. اسأل عن تاريخ آخر اختبار استرجاع وعمّا استُرجع فيه.
- لم يُثبَّت أي تحديث منذ الإطلاق. اسأل عن تاريخ آخر تحديث. وإن لم يعطك أحد تاريخًا فافترض أنه لم يحدث.
الحادثة التي ينتهي إليها إهمال الصيانة
تتكرر القصة بالفصول نفسها كل مرة. مكوّن فيه ثغرة معروفة لا يُحدَّث. يعثر عليه فحص آلي، فالمهاجمون يفحصون العناوين بالجملة ولا يختارون أهدافهم بحسب الحجم. يبدأ الموقع بإرسال رسائل مزعجة أو بتحويل زواره إلى مواقع أخرى. فتوقفه شركة الاستضافة، وتبدأ المتصفحات بتحذير الزوار منه.
ثم يأتي نصفها الثاني. المطوّر انشغل بأعمال أخرى. والنسخة الاحتياطية الوحيدة تعود إلى أسبوع الإطلاق، أو هي محفوظة على الخادم نفسه الذي اختُرق. وبيانات الدخول في هاتف قديم. وهكذا يتحول ما كان عملًا روتينيًا كل شهر إلى أيام من التوقف، وموقع يُبنى من جديد، وطلبات واستفسارات ضاعت في تلك الأثناء.
ثلاثة أسئلة تطرحها هذا الأسبوع
اسأل مَن يتولى موقعك أو نظامك: مَن يملك بيانات الدخول؟ ومتى استُرجعت نسخة احتياطية آخر مرة؟ ومتى ثُبّت آخر تحديث؟ فإن جاءت الأجوبة مبهمة فحوّل القائمة أعلاه إلى عقد مكتوب. وفي مقالنا عن محتوى وثيقة المتطلبات في مشروع بسعر ثابت وصف لوثيقة من النوع نفسه تخص مرحلة البناء.
مرحلة ما بعد الإطلاق عندنا في PearlFibers خطة تشغيل شهرية تشمل الاستضافة والمراقبة والدعم. وتظهر بنودها مفصّلة في بوابة العملاء، حيث تجد أيضًا تذاكر الدعم والفواتير. الشيفرة المصدرية تصبح ملكك عند سداد الدفعة الأخيرة، والاستضافة والدعم بعدها خدمتان اختياريتان. وإذا كان نظامك من بناء جهة أخرى فيمكننا في الغالب استلامه، ونبدأ بمراجعة فنية مدفوعة تخرج منها بتقييم مكتوب لما لديك. ولمعرفة ما تشمله الخطة، أو لطلب تلك المراجعة، ابدأ من صفحة تطوير البرمجيات.