تكمن الفكرة الرئيسة من الخدمات المصغرة في سهولة بناء بعض أنواع التطبيقات وصيانتها عند تقسيمها إلى أجزاء أصغر قابلة للتركيب وتعمل معًا، حيث يُطوَّر كل مكون باستمرار، ويستطيع المطور صيانته على حدة، ثم تُجمع هذه الأجزاء لتكوين التطبيق، على عكس التطبيق التقليدي ذي المعمارية المتراصة monolithic التي يُطور فيها البرنامج مثل قطعة واحدة، وتكون كل خدماته في وحدات برمجية متراصة، وتعمل كلها في وقت واحد.
تتميز التطبيقات المكونة من مجموعة من المكونات المعيارية بسهولة الفهم والاختبار، وكذلك سهولة الصيانة طوال مدة عمل التطبيق، وقد مكّنت المنظمات من تحقيق مرونة أعلى، مع القدرة على تحسين الوقت المستغرق لتحسين عملية الإنتاج، فأثبت هذا النهج تفوقه خاصةً في تطبيقات المؤسسات الكبيرة التي تعمل عليها فرق من المطورين المتنوعين جغرافيًا وثقافيًا، كما كانت له فوائد أخرى هي:
- استقلالية المطور: تعمل الفرق الصغيرة بالتوازي، ويمكنها تكرار دورات التطوير development cycles أسرع من الفرق الكبيرة.
- العزل والمرونة: فإذا توقف أحد المكونات نعزله لفترة قصيرة، بينما تستمر باقي مكونات التطبيق بعملها.
- قابلية التوسع: تستهلك المكونات الأصغر موارد أقل، ويمكن توسيع نطاقها لتلبية تزايد الطلب على هذا المكون فقط.
- أتمتة دورة الحياة: من السهل ملاءمة المكونات الفردية في أنابيب التسليم المستمر وسيناريوهات النشر المعقدة، وهذا غير ممكن في نظام المعمارية المتراصة.
- العلاقة بالعمل: تُقَسم بنى الخدمات المصغرة على طول حدود مجال العمل، مما يزيد الاستقلالية والفهم في المؤسسة.
يعتمد التعريف الشائع للخدمات المصغرة على كل خدمة صغيرة توفر الواجهة البرمجية للتطبيقات API مثل نقطة وصول، وتكون REST API غالبًا عديمة الحالة stateless، ويمكن الوصول إليها عبر بروتوكول HTTPS تمامًا مثل صفحة الويب القياسية، وتعدّ هذه الطريقة سهلةً للمطورين؛ لأنها لا تتطلب إلا أدوات ودوال يعرفها الكثير منهم.
هل مفهوم الخدمات المصغرة حديث؟
إن فكرة فصل التطبيقات إلى أجزاء أصغر ليست جديدةً، حيث تناولت نماذج برمجة أخرى هذا المفهوم، مثل مفهوم البنية الخدمية Service-oriented architecture، والتي تختصر إلى SOA، ومع ذلك أدت التطورات التكنولوجية الحديثة المرتبطة بالتوقعات المتزايدة "للتجارب الرقمية" إلى ظهور جيل جديد من أدوات وتقنيات التطوير المستخدمة لتلبية متطلبات التطبيقات التجارية الحديثة.
لا تعتمد الخدمات المصغرة على التكنولوجيا المُعدة لدعم هذا المفهوم فقط، بل تعتمد أيضًا على ثقافة وخبرة المؤسسة، والبنى المتوافرة لفرق التطوير لتتمكن من اعتماد هذا النموذج، فالخدمات المصغرة جزء من تحول أكبر في أقسام تكنولوجيا المعلومات نحو ثقافة DevOps، والتي تعني تعاون فرق التطوير Development والعمليات Operation تعاونًا وثيقًا لدعم أحد التطبيقات على مدار دورة حياته، والعمل على دورة إصدار سريعة أو مستمرة بدلًا من دورة تقليدية طويلة.
أهمية المصدر المفتوح للخدمات المصغرة
عندما تصمم تطبيقاتك من الألف إلى الياء لتكون معياريةً وقابلةً للتركيب، فسيتيح لك ذلك استخدام عدد كبير من المكونات المتاحة في أماكن مختلفة، والتي ربما كانت تتطلب حلولًا مسجلة الملكية سابقًا، إما بسبب ترخيص المكونات أو المتطلبات المتخصصة، ويمكن أن تكون بعض مكونات التطبيق أدوات جاهزةً مفتوحة المصدر، ويتوافر عدد لا يحصى من المشاريع مفتوحة المصدر التي تنفذ المتطلبات الشاملة لبنى الخدمات المصغرة، مثل المصادقة واكتشاف الخدمة والتسجيل والمراقبة وموازنة الحمل والتوسع وغيرها.
يسهّل التركيز على الخدمات المصغرة على مطوري التطبيقات تقديم واجهات بديلة لتطبيقاتك، إذ ستصبح الاتصالات بين مكونات التطبيق قياسيةً عندما يكون كل شيء واجهة برمجة تطبيقات API، وإذا أراد المكون الاستفادة من تطبيقك وبياناتك فما عليه إلا أن يكون قادرًا على المصادقة والتواصل عبر واجهات برمجة التطبيقات القياسية، مما يتيح لمن هم داخل مؤسستك أو خارجها تطوير طرق جديدة بسهولة للاستفادة من بيانات وخدمات تطبيقك.
الارتباط بين الحاويات والخدمات المصغرة
ظهر المفهوم الحديث لحاويات نظام التشغيل OS الخفيفة في أوائل العقد الأول من القرن الحادي والعشرين مثل جزء من مشروع FreeBSD، وقدم Docker تجربة مستخدم محسّنةً لإنشاء صور الحاويات ومشاركتها، فلاقت اعتمادًا كبيرًا بدءًا من عام 2013. وتناسب الحاويات الخدمات المصغرة، وتتوافق مع الرغبة في الحصول على مكونات خفيفة يمكن إدارتها واستبدالها ديناميكيًا بسهولة، ويمكن تقليص الحاوية للحد الأدنى من القطع القابلة للاستمرار واللازمة لتشغيل ما بداخلها، بدلاً من وضع وظائف متعددة في نفس الجهاز الافتراضي أو المادي، على عكس الأجهزة الافتراضية، وتساعد سهولة التطوير التي يوفرها Docker والأدوات المماثلة على إمكانية تطوير الخدمات واختبارها بسرعة.
الحاويات مجرد أداة، وبنية الخدمات المصغرة مجرد مفهوم، لذلك يمكن إنشاء تطبيق يتبع مفهوم الخدمات المصغرة دون استخدام الحاويات، تمامًا كما يمكن إنشاء تطبيق تقليدي داخل الحاوية، وسيكون هذا منطقيًا عندما تريد الاستفادة من إمكانيات تنظيم الحاوية دون إعادة كتابة تطبيق كبير ذي معمارية متراصة.
تنسيق الخدمات المصغرة
لتشغيل تطبيق قائم على الخدمات المصغرة، يجب أن تكون قادرًا على مراقبة الأجزاء المختلفة المكونة للتطبيق وإدارتها وتوسيع نطاقها، وتوجد أدوات مختلفة تسمح لك بذلك، وقد تكون بعض الأدوات مفتوحة المصدر جزءًا من الحل، مثل Kubernetes، ويمكن استخدام أدوات أخرى لتنظيم أجزاء التطبيق التي لا توجد في الحاويات، فعلى سبيل المثال قد تستخدم Heat لإدارة مكونات التطبيق في سحابة OpenStack.
يمكن استخدام المنصة مثل خدمة Platform as a service، والتي تختصر إلى PaaS، والتي تتيح للمطورين التركيز على كتابة التعليمات البرمجية عن طريق تجريد بعض تقنيات التنسيق الأساسية، أي تضمين الميزات الأساسية لهذه التقنيات، كما تسمح لهم باختيار مكونات مفتوحة المصدر جاهزة لأجزاء معينة من التطبيق بسهولة، مثل محرك تخزين قاعدة البيانات، أو خدمة التسجيل أو خادم التكامل المستمر أو خادم الويب، ولإدارة مكونات التطبيق مباشرةً تستخدم بعض أنظمة PaaS، مثل OpenShift، مشاريع أولية مثل Docker و Kubernetes، بينما يحاول البعض الآخر إعادة تنفيذ أدوات الإدارة بأنفسهم.
ماذا عن التطبيقات الحالية؟
قد يكون استخدام الخدمات المصغرة عنصرًا مهمًا للمضي قدمًا في استراتيجية تكنولوجيا المعلومات في المؤسسة، إلا أن العديد من التطبيقات لا تتوافق مع هذا النموذج، ولا نتوقع إعادة تصميم هذه التطبيقات بين عشية وضحاها لتلبي النموذج الجديد، إذ توجد تكلفة ثقافية وتقنية للانتقال إلى بنية الخدمات المصغرة، ولكن لحسن الحظ يمكن أن تعمل الخدمات المصغرة والتطبيقات التقليدية معًا في نفس البيئات، بشرط أن يكون لدى المنظمة استراتيجية قوية لتكنولوجيا المعلومات ثنائية النسق.
تكنولوجيا المعلومات ثنائية النسق Bi-modal IT وفقًا لـشركة جارتنر Gartner، هي القدرة على استخدام أسلوبين مختلفين ولكن مترابطين لتطوير التطبيقات، يركز الأول على الاستقرار ووقت التشغيل، والثاني على المرونة والسرعة، من خلال طرق أحدث تتضمن أمورًا مثل التزويد الذاتي ودورات التطوير القصيرة، وستحتاج العديد من المنظمات، إن لم يكن معظمها، إلى التكيف للعمل مع كليهما في السنوات القادمة.
ترجمة -وبتصرف- للمقال ?What are microservices من موقعopensource.com
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.