لقد غيرت بنية الخدمات المصغرة الطريقة التي تتبعها المؤسسات في بناء تطبيقات البرمجيات ونشرها. فبدلًا من إنشاء تطبيق واحد كبير حيث تكون جميع العناصر مترابطة بإحكام، تعمل الخدمات المصغرة على تقسيم التطبيقات إلى خدمات أصغر ومستقلة. تتعامل كل خدمة مع وظيفة عمل محددة ويمكن تطويرها ونشرها وتوسيع نطاقها بشكل مستقل.
تعتمد شركات مثل Netflix وUber وAmazon وSpotify وAirbnb على الخدمات المصغرة للتعامل مع ملايين المستخدمين والمعاملات يوميًا.
أصبحت بنية الخدمات المصغرة ذات أهمية متزايدة؛ لأنها تعالج التحديات التي تواجهها المؤسسات مع تصميم التطبيقات التقليدي. يمكن للشركات بناء أنظمة شاملة ومرنة، والتعافي بسهولة من حالات الفشل، وتسريع طرح الميزات الجديدة في السوق.
انتقلت الخدمات المصغرة من كونها توجُّهًا ناشئًا إلى عنصر حيوي في استراتيجية تكنولوجيا المعلومات المؤسسية. وفقًا لتقرير Gartner، تستخدم 74% من المؤسسات التي شملها الاستطلاع بنية الخدمات المصغرة حاليًا، فيما تخطط 23% أخرى لاعتمادها.1
على الرغم من أن الخدمات المصغرة تُضيف المزيد من التعقيد، إلا إن فوائدها تدفع إلى اعتمادها بشكل واسع عبر مختلف الصناعات. يُعَد فهم إيجابيات الخدمات المصغرة وسلبياتها أمرًا ضروريًا لاتخاذ قرارات مستنيرة بشأن اعتمادها.
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
تمثِّل بنية الخدمات المصغرة تحوُّلًا جذريًا في طريقة تصميم وبناء التطبيقات، مبتعدةً عن الأنظمة المترابطة بإحكام نحو بنى موزعة مرنة وسهلة التوسع. فبدلًا من بناء كل شيء كنظام مترابط واحد، يعمل المطورون على تقسيم الوظائف إلى خدمات منفصلة وغير مترابطة. تركِّز كل وحدة قابلة للنشر بشكل مستقل على قدرة أعمال محددة وتعمل باستخدام قاعدة بياناتها الخاصة، ومنطق الأعمال الخاص بها، وواجهات الاتصال الخاصة بها.
يمكن تتبُّع مفهوم الخدمات المصغرة إلى العقد 2010، مع التحول بعيدًا عن البنية الموجَّهة للخدمات (SOA)، وهي نهج يتم فيه بناء تطبيقات الأعمال من عناصر برمجية قابلة لإعادة الاستخدام تُعرَف باسم الخدمات.
تعتمد الخدمات المصغرة على مبادئ البنية الموجَّهة للخدمات (SOA). أصبحت الخدمات أصغر حجمًا وتتمتع الفِرق بمزيد من الاستقلالية ، بينما يتم تقليل التحكم المركزي. اكتسبت هذه البنية شعبية بالتزامن مع ظهور الحوسبة السحابية وتطوير التطبيقات السحابية الأصلية. كانت شركات التكنولوجيا الكبرى مثل Amazon وNetflix من الشركات الرائدة في هذا النهج؛ لأنها كانت بحاجة إلى مزيد من المرونة والقدرة على توسيع أجزاء مختلفة من تطبيقاتها بشكل مستقل.
اليوم، أصبحت الخدمات المصغرة شائعة الاستخدام، مع وجود منظومة متكاملة من الأدوات والمنصات التي تجعلها متاحة للمؤسسات بجميع أحجامها. بلغت قيمة حجم سوق هندسة الخدمات المصغرة عالميًا نحو 376.08 مليار دولار أمريكي في عام 2023. ومن المتوقع أن يصل إلى 523.20 مليار دولار أمريكي بحلول عام 2030، بمعدل نمو سنوي مركَّب (CAGR) يبلغ 4.9% من 2024 حتى 2030.2
فهم الفرق بين الخدمات المصغرة والتطبيقات الأحادية يوضِّح سبب تحوُّل العديد من المؤسسات نحو هذا النهج. في التطبيق الأحادي، يتم بناء كل شيء كوحدة واحدة باستخدام قاعدة كود واحدة. على سبيل المثال، تطبيق ويب للمؤسسة يتولى معالجة طلبات العملاء وإدارة المخزون والفوترة، وستكون جميع هذه الوظائف متكاملة بشكل وثيق. وأي تغيير في جزء واحد يتطلب فهم تأثيره في باقي الأجزاء.
على الرغم من أن هذه البساطة تجعل تطوير البرمجيات في البداية أسهل، إلا إنها تؤدي إلى حدوث مشكلات مع نمو التطبيقات. فأي تغيير يتطلب إعادة بناء ونشر التطبيق بأكمله. وإذا كانت هناك حاجة إلى المزيد من السعة في البنية الأحادية، يجب توسيع التطبيق بأكمله، حتى الأجزاء التي لا تحتاج إلى زيادة في سعة الأداء.
تساعد الخدمات المصغرة على حل هذه المشكلات عن طريق تقسيم التطبيق إلى خدمات منفصلة تتواصل مع بعضها عبر واجهات برمجة التطبيقات (APIs). كل خدمة تمتلك قاعدة كود وقاعدة بيانات خاصة بها، ويمكن نشرها بشكل مستقل.
لنأخذ على سبيل المثال منصة الموسيقى Spotify، التي تضم مئات الملايين من المستخدمين حول العالم. عندما يرتفع الطلب على بث الموسيقى خلال صدور ألبوم كبير، تعمل Spotify على توسيع خدمات توصيل الصوت والقوائم التشغيلية دون التأثير في مصادقة المستخدم أو معالجة الدفع. يُتيح هذا النهج للفِرق المختلفة العمل على الخدمات الفردية في الوقت نفسه دون حدوث تعارضات.
على الرغم من ذلك، فإن بنية الخدمات المصغرة تُضيف مستوًى أعلى من التعقيد في إدارة الأنظمة الموزعة. تتَّبِع العديد من المؤسسات نهجًا هجينًا، يجمع بين الخدمات المصغرة والأنظمة الأحادية والوظائف دون خادم وأنماط بنائية أخرى، اعتمادًا على ما يتوافق مع أفضل الممارسات لكل حالة استخدام.
تعمل الخدمات المصغرة من خلال مزيج من الأنماط البنائية وطرق الاتصال والتقنيات الداعمة. تعمل كل خدمة مصغرة كعملية مستقلة، وتقدِّم ميزاتها عبر واجهات برمجة التطبيقات REST أو قوائم انتظار الرسائل أو تدفقات الأحداث. وتتواصل الخدمات عبر الشبكة لمشاركة البيانات وتفعيل الإجراءات.
على سبيل المثال، عندما يطلب عميل طعامًا عبر Uber Eats، تعمل عدة خدمات معًا بالتتابع. يعمل النظام على التحقق من توفُّر المطعم ومعالجة الدفع وتعيين سائق التوصيل وإرسال التحديثات للعميل. عادةً ما تُدير بوابة واجهة برمجة التطبيقات (API Gateway) هذا التواصل، حيث تعمل كنقطة دخول واحدة توجِّه الطلبات إلى الخدمات المصغرة المناسبة.
أصبحت تقنية النقل بالحاويات، مثل Docker، ضرورية للخدمات المصغرة. تعمل الحاويات على تغليف كل خدمة مصغرة بكل ما تحتاجه لتعمل، ما يؤدي إلى تشكيل وحدة موحَّدة تعمل بالطريقة نفسها في مختلف البيئات.
يعمل نظام Kubernetes والمنصات السحابية المشابهة على تطوير هذا التقدم أكثر من خلال أتمتة نشر هذه الحاويات وتوسيع نطاقها وإدارتها. فهذه المنصات تعمل على إدارة اكتشاف الخدمات، وموازنة الأحمال، ومراقبة السلامة، والتعافي التلقائي عند حدوث الأعطال.
يقدِّم مزوِّدو السحابة الرئيسيون مثل Microsoft Azure وIBM Cloud وGoogle Cloud Platform جميعهم أدوات شاملة وخدمات مُدارة لنشر الخدمات المصغرة وتنسيقها.
إلى جانب الحاويات، تعتمد الخدمات المصغرة على تقنيات أخرى مثل شبكات الخدمات لإدارة التواصل بين الخدمات، وتتبُّع العمليات الموزعة لمراقبة الطلبات، وأدوات إدارة واجهات برمجة التطبيقات للتحكم في الوصول. تُتيح أنظمة إدارة التكوين للخدمات استرجاع الإعدادات بشكل ديناميكي، بينما تجمع منصات التسجيل الموزعة السجلات من جميع الخدمات في مكان واحد.
تمتد فوائد تكامل بنية الخدمات المصغرة لتشمل جوانب واسعة. ومن أبرز المزايا الرئيسية ما يلي:
يمكن للمؤسسات توسيع نطاق ما تحتاجه بالضبط باستخدام الخدمات المصغرة. على سبيل المثال، خلال مواسم الذروة، تعمل منصة الإقامة Airbnb على توسيع خدمات البحث والحجز، مع الحفاظ على خدمات أخرى مثل المراسلة مع المضيف وأنظمة التقييم بالسعة الاعتيادية.
تستخدم الخدمات المختلفة استراتيجيات متنوعة لتوسيع النطاق وفقًا لمتطلباتها. يقلل هذا النهج المعياري من تكاليف البنية التحتية ويحسِّن كفاءة استخدام الموارد مقارنةً بتوسيع التطبيقات الأحادية بالكامل.
تمتلك الفِرَق الصغيرة المستقلة خدمات محددة شاملة. يختار كل فريق أفضل التقنيات المناسبة لخدمته، ويتحرك بوتيرته الخاصة دون انتظار التنسيق المؤسسي العام أو دورات إعادة النشر.
يمكن للشركات اختبار الأفكار بسرعة، والتكرار بشكل أسرع، والاستجابة لتغيّرات السوق بسرعة أكبر من خلال بناء ميزات مثل الخدمات الجديدة التي تتكامل مع الخدمات الحالية.
إذا تعطَّل محرك التوصيات، فلا يزال بإمكان المستخدمين تصفح المنتجات، وإضافة العناصر إلى سلة التسوق، وإتمام عملية الدفع. تُتيح قواطع الدوائر والأنماط المماثلة للخدمات التعامل مع الأعطال بسلاسة عندما لا تستجيب التبعيات.
تُعَد هذه المرونة ضرورية للشركات التي تصل فيها تكلفة التوقف عن العمل إلى آلاف الدولارات في الدقيقة الواحدة. نادرًا ما يتوقف التطبيق بأكمله عن العمل، حتى عند فشل عناصر فردية، لأن الأعطال تظل معزولة.
توفِّر المؤسسات المال من خلال إدارة الموارد بكفاءة، حيث يتم توسيع الخدمات التي تحتاج إلى سعة أكبر فقط بدلًا من توسيع التطبيقات بالكامل. يمكن لفِرق التطوير تحسين التكاليف باختيار أنسب مجموعة تقنيات للمتطلبات المحددة لكل خدمة، مع تجنُّب تكاليف الإفراط في الهندسة أو تطبيق الحلول المؤسسية بشكل موحَّد. يعمل نموذج الدفع حسب الاستخدام في الخدمات المصغرة السحابية على ربط التكاليف مباشرةً بالاستخدام الفعلي.
وجد استطلاع أجرته IBM حول الخدمات المصغرة في المؤسسات لعام 2021 أن 87% من أكثر من 1,200 من المديرين التنفيذيين في مجال تكنولوجيا المعلومات والتنفيذيين المطورين والمطورين اتفقوا على أن اعتماد الخدمات المصغرة يستحق التكلفة والجهد.
يمكن لفِرق عمليات التطوير إدخال عناصر جديدة بسلاسة دون التسبب في تعطُّل النظام، وذلك بفضل التشغيل المستقل لكل خدمة.
تعمل الاختبارات المؤتمتة ومسارات النشر والبنية التحتية كرمز (IaC) بشكل متوافق مع الخدمات المصغرة، ما يؤدي إلى بناء ثقافة إصدارات سريعة وموثوق بها.
يمكن لكل خدمة مصغرة استخدام تقنيات مختلفة، بما في ذلك لغات البرمجة (مثل Java وPython) وأطر العمل وقواعد البيانات الأنسب لوظيفتها المحددة. لا يتم تقييد الفِرق باستخدام مجموعة تقنيات واحدة للتطبيق بأكمله.
يمكن للمؤسسات تبنّي التقنيات الجديدة تدريجيًا، وتجربة الأدوات الناشئة، والاستفادة من الحلول المتخصصة حيث توفِّر أكبر قيمة.
على الرغم من الفوائد الكبيرة، هناك بعض السلبيات المرتبطة بالخدمات المصغرة التي يجب على المؤسسات معالجتها:
يتطلب اختبار التطبيق القائم على الخدمات المصغرة نهجًا مختلفًا مقارنةً بالتطبيقات الأحادية. يجب التحقق من جميع التبعيات، وعمليات التخزين المؤقت، والوصول إلى البيانات؛ لضمان الأداء السليم. تتضمن بيئات الاختبار عدة خدمات تعمل في الوقت نفسه مع التكوين والبيانات المناسبة.
مع نمو الخدمات، تتوسَّع سيناريوهات الاختبار. يتطلب الحفاظ على اتساق بيانات الاختبار وسلامة البيانات عبر الخدمات تخطيطًا استراتيجيًا.
يفرض الاتصال الشبكي بين الخدمات المصغرة متطلبات أمان معززة. تحتاج بوابات واجهات برمجة التطبيقات إلى مصادقة وتشفير مناسبين.
إدارة بيانات الاعتماد ورموز الوصول عبر عدة خدمات مصغرة تتطلب تنسيقًا مدروسًا، وتحتاج فِرق الأمان إلى أدوات رؤية قوية لمراقبة الأنشطة عبر البنية الموزعة.
تصبح اعتبارات التصميم أساسية عند تنسيق التواصل بين الخدمات. تؤدي الاستدعاءات بين الخدمات إلى زيادة زمن انتقال الشبكة مقارنةً باستدعاءات الوظائف داخل العملية الواحدة، وتتراكم هذه التأخيرات مع مرور الطلبات عبر عدة خدمات.
تصبح ميزات مرونة الشبكة مثل منطق إعادة المحاولة، وانتهاء المهلات، وإدارة الأعطال ممارسة معيارية. تتطلب إدارة إصدارات واجهات برمجة التطبيقات تخطيطًا دقيقًا مع تطوُّر الخدمات بشكل مستقل.
كل خدمة مصغرة تُدير قاعدة بياناتها الخاصة تشكِّل تحديات في إدارة البيانات. ويتطلب الحفاظ على الاتساق عند امتداد المعاملات عبر عدة قواعد بيانات أنماطًا محددة، كما أن إعداد التقارير يحتاج إلى أساليب مختلفة عندما تكون البيانات موزعة بدلًا من كونها مركزية.
تتطلب بنية الخدمات المصغرة تخطيطًا مدروسًا وتنفيذًا دقيقًا. وتتضمن أفضل الممارسات الاستراتيجيات الرئيسية التالية:
يجب أن تتوافق حدود الخدمة مع قدرات الأعمال بدلًا من الوظائف التقنية. وتحتاج كل خدمة إلى ملكية واضحة ومسؤولية مركَّزة.
يمنع هذا النهج الخدمات من أن تصبح دقيقة جدًا أو تتوسَّع لتصبح عناصر صعبة التحكم، ما قد يؤدي إلى تقويض هدف الخدمات المصغرة.
يُعَد تتبُّع العمليات الموزعة والتسجيل المركزي وجمع المقاييس عبر جميع الخدمات أمرًا أساسيًا. عندما تظهر مشكلات، يصبح تصحيح الأخطاء عبر عدة خدمات شبه مستحيل دون توفُّر هذه الرؤية.
تساعد بوابات واجهات برمجة التطبيقات على جمع الميزات المشتركة مثل المصادقة وتحديد معدلات الطلب والتوجيه في مكان واحد، بدلًا من تكرار هذا المنطق عبر الخدمات.
دمج مفاتيح الدوائر (circuit breakers)، ومنطق إعادة المحاولة، واستراتيجيات النسخ الاحتياطي في تصميم الخدمات. توفِّر هذه الأنماط وغيرها من أنماط تصميم الخدمات المصغرة أساليب موثوقًا بها للتعامل مع التحديات الشائعة.
تمكِّن مسارات النشر المؤتمة الفِرق من إطلاق الخدمات بشكل مستقل مع الحفاظ على استقرار النظام. عندما لا تكون الاستجابة الفورية مطلوبة، يُتيح التواصل عبر قوائم انتظار الرسائل أو تدفقات الأحداث الحفاظ على ترابط مرن بين الخدمات بدلًا من اعتمادها بشكل وثيق على بعضها.
تصبح أتمتة البنية التحتية ضرورية مع تزايد عدد الخدمات. ويتعين تنفيذ تنسيق الحاويات وأتمتة النشر وإدارة التكوين مبكرًا؛ لتجنُّب العوائق التشغيلية.
استفِد من إمكانات الذكاء الاصطناعي والأتمتة لحل المشكلات بشكل استباقي عبر مجموعة التطبيقات.
استخدم أدوات وبرمجيات عمليات التطوير لإنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها عبر أجهزة وبيئات متعددة.
عزّز مرونة أعمالك ونموها من خلال التحديث المستمر لتطبيقاتك على أي منصة، وذلك باستخدام خدمات الاستشارات السحابية التي نقدمها.
1. Microservices architecture: Have engineering organizations found duccess?, Gartner, 2023
2. Microservices architecture market size, share and trends analysis report, Grand view research, 2024