البنية الأحادية — وحدة نشر واحدة، قاعدة بيانات واحدة

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

التطبيق الأحادي تطبيق يُبنى ويُنشر كوحدة واحدة: تعمل واجهة المستخدم ومنطق العمل والوصول إلى البيانات كلها داخل عملية واحدة مقابل قاعدة بيانات مشتركة، والتوسّع يعني تكرار الشيء كله.

البنية الأحادية — وحدة نشر واحدة، قاعدة بيانات واحدة

لوحة FlowJam التفاعلية لهذا الشرح — كل مسار وصف وسهم أعلاه جزء من مخطط QueryChart حقيقي يمكنك فتحه وتعديله.

كيف تقرأ هذا الشرح المرئي

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

مسار الطلب داخل عملية واحدة

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

قاعدة البيانات المشتركة

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

سقف التوسّع

«الاستجابة تعود عبر الوحدات نفسها» تُتمّ رحلة الذهاب والإياب، و«التوسّع يعني تكرار التطبيق بأكمله» هو الحكم النهائي. فميزة منشغلة واحدة تفرض نقل قاعدة الشيفرة كلها ومجمّع اتصالاتها إلى خادم آخر، فتُهدر الطاقة على الأجزاء غير المنشغلة. وهذا الهدر، لا أي عطل تقني، هو ما يحفّز في النهاية على التقسيم إلى خدمات مصغّرة.

العلاقات الرئيسية والخلاصات

  • تتشارك كل الوحدات عملية واحدة وقاعدة شيفرة واحدة وعملية نشر واحدة — وهذا الاحتواء هو التعريف.
  • قاعدة البيانات المشتركة تقرن كل وحدة بمخطط بيانات واحد.
  • تسير الطلبات عبر كل وحدة في رحلة ذهاب وإياب واحدة — فلا يوجد استدعاء خدمة منفصل.
  • التوسّع خشن: يُكرَّر التطبيق بأكمله، انشغلت الميزة أم لم تنشغل.
  • سرعة التطوير في التطبيق الأحادي حقيقية؛ وسقف التوسّع هو ما يقايض به مقابلها.

متى تستخدم هذا الشرح المرئي

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

كيف تعمل

  1. أعد تسمية الوحدات لتطابق قاعدة شيفرتك

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

  2. حدّد أعناق الزجاجة الحقيقية في التوسّع

    علّق على المربع الأخير بالميزة أو الاستعلام الفعلي الذي يفرض توسّعك، وبالطاقة المهدورة نتيجة تكرار التطبيق بأكمله.

  3. ارسم المرشّحين للاستخراج

    أضف حداً فاصلاً متقطّعاً حول الوحدة الأفضل ترشيحاً لتصبح خدمة، مع ملاحظة عن الاقتران الذي يجب قطعه.

  4. اربط بالبديل القائم على الخدمات المصغّرة

    بعد تحديد المرشّحين للاستخراج، اربط بالشرح المرئي للخدمات المصغّرة لمقارنة البنية المستهدفة جنباً إلى جنب.

الأسئلة الشائعة

ما هي البنية الأحادية؟

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

لماذا تبدأ الفرق بتطبيق أحادي؟

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

ما المشكلة الرئيسية في التطبيق الأحادي؟

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

كيف يتحوّل التطبيق الأحادي إلى خدمات مصغّرة؟

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

عدّل هذا الشرح المرئي في QueryChart (FlowJam)

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

عدّل هذا الشرح المرئي في QueryChart (FlowJam)

المزيد في الشروحات المرئية