في هذه الصفحة
أصبحت Microservices، المحبوبة من قبل عمالقة التكنولوجيا مثل Netflix و Amazon، منهج جديد في تطوير البرمجيات قابلة للتطوير (scalable) ومرنة(flexible). يتعمق هذا المقال في مبادئ Microservices و يسلط الضوء على الجوانب المختلفة لإستخدامها.
ما هي Microservices؟
الـMicroservices هي نهج لتطوير البرامج، فيه يتم تقسيم التطبيقات المعقدة إلى services مستقلة تعمل معًا لتوفير أداء -functionality- كامل، على عكس monolithic architectures وهى عبارة عن وحدة واحدة تتضمن جميع المكونات المختلفة للتطبيق ، بما في ذلك APIs و Services وقواعد البيانات و load balancers وما إلى ذلك.
تعمل Microservices على تعزيز تصميم نظام اللامركزية loosely coupled and decentralized. وتكون كل Microservice مختصة فى business capability محددة ويمكن تطويرها ونشرها وتوسيع نطاقها وصيانتها بشكل مستقل عن الـservices الأخرى و بواسطة فرق مستقلة.
مبادئ Microservices
- المسؤولية الفردية (Single Responsibility): يجب أن يكون لكل service نطاق صغير ومحدود وأن تكون مسؤولة عن business functionality محددة. يتيح هذا المبدأ إمكانية الصيانة (maintainability)، إمكانية الاختبار (testability) ومرونة أفضل (flexibility).
- الإدارة اللامركزية (Decentralized Governance):
فيه يكون كل service مستقل وله دورة حياة تطوير والنشر خاصة به. ويسمح هذا المبدأ للفرق باختيار أنسب اللغات، technologies والـframeworks لكل Microservice؛ مما يعزز الابتكار والـagility.
- الاتصال عبر APIs : تتواصل Microservices مع بعضها البعض من خلال lightweight protocols، وعادةً ما تكون RESTful APIs أوmessage queues، حتى لو تم تطويرها باستخدام technologies مختلفة.
ويعزز هذا المبدأ
- seamless integration : هو عبارة عن إضافة service جديدة بسلاسة مع النظام الحالي. وهذا يعني أنه يمكن تشغيل service الجديدة واستخدامها دون إيقاف الشبكة كاملة وغيرها من المشاكل.
- loose coupling : يعني أن الـservices المختلفة أقل اعتمادًا على بعضها البعض ويمكن أن تعمل بشكل أكثر استقلالية.
- عزل الأعطال والمرونة (Fault Isolation and Resilience): يتم تصميم الـservices للتعامل مع حالات failures بأمان. من خلال عزل كل Microservice، فبوجود أي نوع من أنواع الـfailures في Microservice محددة وليست فى النظام باكمله، مما يضمن التوافر العالي للخدمات (high availability) ومرونة التعامل مع الأخطاء(fault tolerance).
- قابلية التوسع والمرونة: تتيح الـMicroservices إمكانية التوسع، مما يسمح للمؤسسات بتوسيع services بشكل مستقل بناءً على الطلب. يضمن هذا المبدأ الاستخدام الفعال للموارد ويحسن الأداء العام للنظام.
فوائد Microservices
- قابلية التوسع: تمكّن Microservices المؤسسات من توسيع نطاق services بناءً على الطلب، مما يضمن الاستخدام الفعال للموارد وتحسين التكلفة.
- Agility: تعزز الـMicroservices دورات التطوير الأسرع، والتطوير الموازي للـservices المختلفة، والتسليم المستمر، مما يمكّن المؤسسات من الاستجابة بسرعة للتغيرات السوق واحتياجات العملاء.
- Resilience: إن عزل أخطاء Microservice والطبيعة اللامركزية تجعل النظام أكثر مرونة. لا تؤثر حالات failures في service واحدة على النظام بأكمله، مما يضمن توفرًا عاليًا وimproved fault tolerance.
- Technology Heterogeneity: تسمح الـMicroservices للمؤسسات باستخدام مزيج من التقنيات ولغات البرمجة المناسبة لكل service. هذه المرونة تعزز الابتكار وتمكن الفرق من اختيار أفضل الأدوات للمهام المختلفة.
- استقلالية الفريق: تتوافق Microservices جيدًا مع منهجيات DevOps وAgile، مما يمكّن الفرق من الحصول على ملكية services والعمل بشكل مستقل؛ والذي يعزز الاستقلالية الإنتاجية والتعاون والمساءلة.