هندسة البرمجيات

تطبيق معياري أم خدمات مصغرة: كيف تختار؟

اختر المعمارية وفق الفريق والنشر وقدرات التشغيل لا الموضة التقنية.

دوائر إلكترونية تعبر عن معمارية برمجية مترابطة.

دوائر إلكترونية تعبر عن معمارية برمجية مترابطة.

اطرح السؤال المعماري الصحيح

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

فهم متراصة وحدات

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

افهم ما الذي تجعله الخدمة الصغيرة مستقلة

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

قارن التكاليف التي تنساها المخططات

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

الحفاظ على اتساق البيانات

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

مثال: منتج حجز متزايد

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

تصميم العقود المتوافقة

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

مواءمة البنية مع قدرة الفريق

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

اتخاذ قرار موثق وقابل للرجوع عنه

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

تتطور دون زيادة التعقيد

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

ورشة عمل: تقييم استخراج الخدمة

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

الأسئلة المتداولة: الأداء والتطور

هل الخدمات الصغيرة أسرع دائمًا؟ تضيف الاتصالات زمن الوصول، ولكنها تسمح في بعض الأحيان بالتوسع المستهدف. يجب قياس الأداء على مدار الدورة بأكملها.

هل يمنعك المونوليث من النمو؟ يمكن للتطبيق المعياري أن يخدم العديد من الأغراض. وتعتمد الحدود بشكل خاص على النموذج والوصول إلى البيانات والتشغيل والتنظيم.

هل يمكننا التغيير لاحقا؟ نعم، ولكن السهولة تعتمد على الحدود الموجودة بالفعل. إن حماية بيانات الوحدة وعقودها يجعل عملية الاستخراج أقل تكلفة. وعلى العكس من ذلك، فإن نقل التعليمات البرمجية إلى عمليات متعددة دون تقليل الاقتران يمكن أن يحافظ على قيود النظام الأولي أثناء إضافة قيود الشبكة.

TUPLIFY STUDIO

ما يمكننا تطويره لك

نصمم معماريات قابلة للصيانة وبرمجيات معيارية تتطور مع نشاطك.

لنتحدث عن مشروعك

للمزيد · الوثائق الرسمية

Microsoft — Microservices architecture
  • Software engineering
  • Architecture
  • Microservices

Tuplify Studio · أدلة تعليمية أُعدت بمساعدة الذكاء الاصطناعي. الأمثلة توضيحية.