خدمة مدمجة
تشير الخدمة المضمنة (Embedded Service) إلى مكون برمجي أو وظيفة مدمجة مباشرة داخل تطبيق أو نظام أكبر، بدلاً من الوصول إليها كخدمة مصغرة خارجية ومنفصلة عبر استدعاء شبكي. فبدلاً من إجراء طلب واجهة برمجة تطبيقات (API) عن بعد، يتم نشر منطق الخدمة أو غلاف خفيف الوزن بجوار بيئة تشغيل التطبيق المضيف أو داخلها مباشرة.
يغير تضمين الخدمات بشكل كبير الملف التشغيلي للتطبيق. من خلال وضع الوظائف معًا، يمكن للمطورين تقليل زمن الوصول للشبكة، وتقليل الحمل الزائد للاتصال بين العمليات، وتبسيط تعقيد النشر لبعض الميزات المترابطة بإحكام. غالبًا ما يتم اختيار هذا النهج عندما تفوق مكاسب الأداء الناتجة عن إلغاء القفزات الشبكية فوائد الفصل الكامل للخدمات.
يختلف التنفيذ بناءً على حزمة التقنيات المستخدمة. في بعض الحالات، يتم تجميع منطق الخدمة مباشرة في الملف الثنائي للتطبيق الرئيسي. وفي حالات أخرى، قد تعمل كعملية جانبية (sidecar process) داخل نفس الحاوية أو مساحة العملية، وتتواصل عبر آليات في الذاكرة (مثل الذاكرة المشتركة أو استدعاءات الدوال المباشرة) بدلاً من بروتوكول HTTP/RPC عبر الشبكة.
تُستخدم الخدمات المضمنة بشكل متكرر للعمليات ذات التردد العالي وزمن الوصول المنخفض. تشمل الأمثلة التحقق من صحة البيانات في الوقت الفعلي، أو فحوصات المصادقة الخفيفة التي تتم فور إدخال المستخدم، أو منطق تحويل البيانات المتخصص الذي يجب أن يتم تنفيذه ضمن مسار الطلب الرئيسي.
تشمل المزايا الأساسية تقليل زمن الوصول، وتبسيط التصحيح المحلي، واحتمال انخفاض التكاليف التشغيلية المرتبطة بإدارة نقاط نهاية شبكة متعددة ومستقلة. بالنسبة للعمليات الحرجة للمسار، يضمن التضمين أداءً يمكن التنبؤ به.
العيب الرئيسي هو انخفاض قابلية التجزئة (modularity). إن الترابط الوثيق للخدمات يجعل التوسع والتحديث المستقلين أكثر تعقيدًا. يمكن أن يؤدي فشل الخدمة المضمنة إلى تعطل التطبيق المضيف بأكمله، مما يزيد من نطاق التأثير (blast radius).
يتناقض هذا المفهوم مع بنية الخدمات المصغرة (Microservices architecture) التقليدية، حيث يتم فصل الخدمات عن قصد. ويشترك في أوجه تشابه مع أنماط العمل الجانبي (Sidecar Patterns)، على الرغم من أن مستوى التكامل (في العملية مقابل المتجاور) يختلف اختلافًا كبيرًا.