تخطى إلى المحتوى الرئيسي

القائمة

من المونوليث إلى الخدمات المصغرة: قصة هجرة
العودة إلى المدونةالبحث والتقنية

من المونوليث إلى الخدمات المصغرة: قصة هجرة

4 دقائق14 نوفمبر 2025

لماذا بدأنا

لم يكن النظام المتكامل معطوباً. هذا أوّل ما يجب فهمه، لأنّ السرد السائد حول هجرات الخدمات المصغّرة هو أنّها تنقذ الفرق من نظام متكامل فاشل. كان نظامنا المتكامل ينشر في اثنتي عشرة دقيقة، ويتوسّع أفقياً خلف موازن أحمال، ويخدم ثلاثمائة ألف مستخدم دون حوادث ذات معنى. لم نهاجر لأنّه كان معطوباً بل لأنّ معدّل التغيير جعل قاعدة الشيفرة اختناقاً تنسيقيّاً — خمسون مهندساً يدفعون إلى وحدة نشر واحدة يعني أنّ الإصدارات كانت مجدولة، وتعارضات الدمج متكرّرة، ودائرة انفجار أيّ تغيير هي النظام كلّه.

استغرقت الهجرة ثمانية عشر شهراً. كانت أصعب مهمّة هندسيّة قُدتها، ومعظم ما تعلّمته لم يكن عن الخدمات المصغّرة. كان عن المؤسّسات والتواصل والتواضع للاعتراف بأنّ قراراً تقنيّاً هو في الحقيقة قرار اجتماعيّ يرتدي زيّاً تقنيّاً.

الأخطاء التي كادت تقتلنا

ارتكبنا كلّ خطأ مدرسي، وأوثّقه هنا لا اعترافاً بل وقاية. الأوّل كان التقسيم حسب الطبقة التقنيّة لا القدرة التجاريّة — خدمة مستخدم، وخدمة مصادقة، وخدمة إشعارات — ممّا أنتج نظاماً متكاملاً موزّعاً بزمن استجابة أعلى وتماسك أقلّ من النظام الذي استبدله. لم يختفِ الترابط؛ بل انتقل من استدعاءات الدوال داخل العمليّة إلى استدعاءات الشبكة، واستدعاءات الشبكة أغلى بأربعة حدود من حيث التكلفة.

الخطأ الثاني كان ترحيل البيانات قبل الخدمات. شاركنا قاعدة بيانات عبر ستّ خدمات، ممّا يعني أنّ كلّ تغيير في المخطّط تطلّب تنسيق ستّة فرق، وكانت الخدمات مترابطة في طبقة البيانات حتّى بعد فكّ ترابطها في طبقة الشيفرة. استغرق منّا أربعة أشهر للتعرّف على أنّ قاعدة البيانات، لا الشيفرة، هي الحدّ الحقيقي، وأنّ الهجرة إلى خدمات دون الهجرة إلى مخازن بيانات مستقلّة مسرح معماريّ.

قيمة الخدمات المصغّرة ليست أنّها أصغر. بل أنّها تمكّن القابليّة للنشر المستقلّ. إذا لم يكن بإمكان خدماتك النشر بشكل مستقلّ، فأنت لم تبني خدمات مصغّرة؛ بل بنيت نظاماً متكاملاً بقات إضافيّة للشبكة.

مبادئ أنقذتنا

تطلّب التعافي من تلك الأخطاء المبكّرة مبادئ تبدو، في الأثر، بديهيّة لكن كان علينا اكتشافها بالطريقة الصعبة. كلّفنا كلّ مبدأ حادث إنتاج مؤلماً واحداً على الأقلّ لاستيعابه، وأشاركها أملاً في أن تنقذ شخصاً آخر الرسوم.

  • اقسم حسب القدرة التجاريّة لا الطبقة التقنيّة. إذا كان يجب أن تتغيّر خدمتان معاً، فهما خدمة واحدة.
  • امتلك بياناتك. الخدمة التي لا تتحكّم في طبقة ثباتها مكتبة لا خدمة.
  • صمّم للفشل لا للمسار السعيد. كلّ استدعاء عبر الخدمات يجب أن يكون له بديل ذو معنى.
  • أصدِر إصدارات لواجهاتك من اليوم الأوّل. التغييرات الكاسرة حتميّة؛ غير المنسّقة كارثيّة.
  • استثمر في خط نشر قبل أن تحتاجه. الخط الذي عمل لخدمة واحدة لن يعمل لاثنتي عشرة.

ما الذي سأفعله بشكل مختلف

لو استطعت إعادة تشغيل الهجرة بمعرفة ما أعرفه الآن، لكنّا بدأت أصغر. حاولنا ترحيل كلّ شيء في وقت واحد لأنّ مخطّط المعماريّة بدا أنيقاً بكلّ الخدمات في مكانها. والنتيجة كانت ثمانية عشر شهراً من عدم استقرار انتقاليّ حيث لم يكن لا النظام المتكامل ولا الخدمات موثوقاً تماماً. كان نهج التين الخانق — ترحيل قدرة واحدة في كلّ مرّة، وترك كلّ واحدة تثبت نفسها في الإنتاج قبل لمس التالية — سيستغرق الوقت الإجماليّ نفسه لكنّه سيحمل مخاطرة أقلّ بكثير طوال الوقت.

كنت سأستثمر أيضاً أبكر في إمكانيّة الملاحظة. تعاملنا مع التسجيل والتتبّع كبنية تحتيّة يجب إضافتها بمجرّد استقرار الخدمات. كانت في الواقع الأداة التي كانت ستخبرنا بأنّ الخدمات مستقرّة. تكلفة الأدوات المبكّرة جزء بسيط من تكلفة تصحيح نظام موزّع معتم تحت عبء إنتاج. قصص الهجرة ليست عن معماريّة الوجهة؛ بل عن الرحلة، والرحلة تشغيليّة لا معماريّة.

مشاركة

خلدون سنجاب
كتبه

خلدون سنجاب

مطور برمجيات وباحث في علوم الحاسوب وأكاديمي في جامعة الشارقة، مع أكثر من 20 عامًا من الخبرة في هندسة البرمجيات والحوسبة السحابية والذكاء الاصطناعي. شغوف ببناء أنظمة تربط بين البحث الأكاديمي والتأثير العملي.