معمارية البرمجيات / التفاعلات: التوزيع والفشل والتشغيل / الدرس 7
اختر حدود النشر وفق حاجات الاستقلال الفعلية
قارن التطبيق الأحادي الوحداتي والخدمات المستقلة دون اعتبار التوزيع علامة نضج.
في هذه الصفحة
أهداف الدرس
- افصل التقسيم المنطقي عن فصل العمليات والنشر.
- قيّم فصل خدمة بالملكية والبيانات وعواقب الفشل.
تجيب الوحدة والخدمة المنشورة عن سؤالين مختلفين
يجمع التطبيق الأحادي الوحداتي مسؤوليات محددة في تطبيق قابل للنشر. وتضع الخدمات مسؤوليات مختارة خلف عمليات وشبكات، ويفضل بملكية وإصدار مستقلين. وقد يحسن أي تصميم بنيته الداخلية أو يسيئها. يغير التوزيع كلفة الاتصال والفشل: يصبح الاستدعاء المحلي تفاعلا بعيدا بزمن وإتاحة جزئية ونتائج مجهولة. اختر هذه الكلفة عندما تشتري قدرة مطلوبة، ولا تفترض أن زيادة العمليات تحسن الصيانة أو الأداء أو إنتاجية الفريق تلقائيا.
ابحث عن قدرة عمل متماسكة
يتضمن المثال تصفح الفهرس وحجز المقاعد وتسليم الإشعارات. وقد يستحق عامل الإشعارات توسيعا مستقلا حتى لا يشغل بطء المزود خيوط طلبات الحجز. لكن فصل الوصول للبيانات إلى خدمة قاعدة عامة قد يحوّل كل عمل إلى عنق مشترك ويكشف تفاصيل التخزين. تحتوي حدود الخدمة المفيدة معرفة عملها وتملك كتاباتها. تساعد السياقات المحدودة على اكتشاف تغير معاني المصطلحات؛ وهي حدود نمذجة ولا تفرض خدمة لكل سياق آليا.
candidate: notification delivery
independent_need: provider latency varies from reservation latency
owned_state: delivery attempts and delivery outcome
input: ReservationConfirmed event
excluded: seat allocation and capacity decisions
تسمّي الفرضية سبب الفصل والحالة المملوكة. وتحتاج تصميم التسليم والأمن والانتقال قبل أن تصبح خطة تنفيذ.
اختبر استقلال الإصدارات فعليا
إذا احتاج كل إصدار إشعارات إلى إصدار حجز ومخطط مشترك وترحيل قاعدة منسق، فقد أنتج حد العملية تطبيقا أحاديا موزعا. بعض التنسيق طبيعي، لكن التزامن المتكرر يوحي بعقود غير مستقرة أو مسؤولية في غير مكانها. راجع تغييرا واقعيا مثل قناة تسليم جديدة: ما المستودعات والعقود والفرق وخطوات النشر المتأثرة؟ استقلال النشر قدرة تثبت بواجهات متوافقة وملكية بيانات، لا بأسماء مستودعات أو صور حاويات منفصلة.
قارن كلفة التشغيل الكاملة
المقارنة التالية نوعية عمدا. للتطبيق الواحد حد مشترك للإصدار وفشل العملية؛ وقد يناسب فريقا واحدا ومعاملة حجز ذرية. تعزل الخدمات التوسيع والملكية لكنها تحتاج هوية خدمة ورصدا وسياسة شبكة وتطور عقد واستعادة. تجنب درجات وأوزانا اعتباطية تخفي الافتراضات. استخدم أهم سيناريوهات الجودة والقدرات الحالية لتفسير كلفة مقبولة وأخرى لا حاجة لها حاليا.
Option A: one application, explicit internal booking/notification modules
Benefit: local calls and one reservation transaction boundary
Cost: shared release and process resources
Option B: booking application plus notification worker
Benefit: independent worker concurrency and provider isolation
Cost: durable messages, deduplication, and cross-process telemetry
لا يُعلن أي خيار أفضل للجميع. يفيد فصل العامل فقط إذا بررت طبيعة حمل التسليم ومتطلباته التشغيلية الإضافية ذلك.
احفظ مسارا لتغيير الحدود
ابدأ بواجهات وحدات صريحة وملكية بيانات مرجعية حتى لو نُشر الكل معا. تسهّل هذه الممارسات الاستخراج لاحقا، مع بقاء حاجة الشبكة لدلالات فشل وعمل نشر جديد. استخرج مسارا متماسكا بمراحل ورصد ومعايير تراجع. وأعد جمع الخدمات إذا أثبتت أنها تضيف تنسيقا دون استقلال مفيد. يجوز أن تتطور المعمارية في الاتجاهين؛ فحماية فصل غير مناسب حفاظا على رسم قديم تزيد الكلفة دون خدمة المستخدم.
الأخطاء الشائعة وإصلاحها
يتحول كل جدول إلى خدمة.
- لماذا يحدث؟
- حل شكل التخزين محل نمذجة قدرة العمل.
- كيف تصلحه؟
- اجمع العمليات حول معرفة وقيود متماسكة.
- كيف تتجنب تكراره؟
- حلّل تغييرات عمل ممثلة قبل الفصل.
يجب إصدار الخدمات كلها معا.
- لماذا يحدث؟
- حفظت التفاصيل المشتركة والعقود الكاسرة الترابط المتزامن.
- كيف تصلحه؟
- ثبّت العقود أو أعد النظر في الفصل.
- كيف تتجنب تكراره؟
- تتبّع أسباب الإصدار المنسق بدلا من عدّ النشرات.
يُتوقع أن يزيل التوزيع تنسيق الفرق.
- لماذا يحدث؟
- لم تعالج الملكية التنظيمية والسياسات المشتركة.
- كيف تصلحه؟
- عيّن مالكي العقود والبيانات والتشغيل صراحة.
- كيف تتجنب تكراره؟
- ضمّن قدرة التشغيل في التقييم.
اختبر فهمك
1. لفريق صغير إصدارات موثوقة ومزود بريد بطيء. هل يجب تحويل كل قدرة إلى خدمة؟
اعرض الحل المشروح
لا. قد يعزل تجريد تسليم داخلي وعامل خلفية دائم المشكلة دون فصل الفهرس والحجز. قارن العامل بالخيارات الأخرى وفق الزمن والاستعادة. احفظ قيد الحجز وحدد سلوك تأخر الإشعار. يبرر الدليل حدا محددا، لا منصة موزعة كاملة.
2. ما الدليل الذي يدعم استخراج الفهرس لاحقا؟
اعرض الحل المشروح
أثبت اختلاف الملكية أو التوسيع وعقد استعلام مستقرا ومصدرا واضحا لكتابات الفهرس وتحمل تأخر النسخ. بيّن كيف يستقل إصدار الفهرس وكيف يؤثر فشله في الحجز. دون ذلك قد ينقل الاستخراج الترابط إلى الشبكة بدلا من خفضه.
أهم ما تعلمته
- اختر التوزيع لقدرة مثبتة مع قبول كلفتها.
- تهم الملكية المنطقية قبل استخراج الخدمة وبعده.