لما نقول نظام Monolith ( توحيدي او موحد) معناه أنه نظام تحتاج عند كل تعديل عليه و لو كان بسيط ان ترفع Deploy نسخه كاملة جديدة منه. قد يكون النظام Modular موزّع بداخله لكن الفيصل في الحُكم هو طريقة الDeployment. سنتعرف ايضاً عن الSOA و الMicrosevices و الفرق بينهما
(سلسلة)
(سلسلة)
المشكلة ان هناك Coupling أي ارتباط وثيق ينتج عنه أن أي تعديل في أي جزء يستلزم تغيير في جزء آخر و علينا الحذر حتى لا يؤثر التغيير على الأجزاء الاخرى بما فيها قواعد البيانات.
من مباديء الArchitecture ان تسعى لأن تكون انظمتك متماسكة لا مترابطة أي High cohesion, Low coupling
ستتضح هذه الفكرة ..
ستتضح هذه الفكرة ..
الMicroservices هي أن تأخذ Module معين بالكود و بقاعدة بياناته الخاصه به و تقوم بتغليفه و يصبح التعامل معه من خلال Api هي عبارة عن عقد Contract مع الModule الأخرى. بأن تقول سأوفر لكم كذا إن اعطيتوني كذا او العكس ان ترسل لMicorservice الأخرى بيانات و تتوقع منها بيانات حسب عقدها.
لكن على أي أساس نقسم نظامنا الMonolith عدة Microservices ؟ هناك طرق كثيرة منها اعتماد مبدأ SRP الذي هو احد مباديء SOLID الخمسة في تصميم الكلاسات و الذي ينص على ان يكون هناك سبب واحد فقط للتغير في ذلك الكلاس
و كما شرحه روبرت مارتن بأن يكون كل كلاس موجه لإدارة او قطاع خاص في منشأتك بحيث لو طلبت إدارة تتبع للقطاع أي تغيير عليه فليس من الضروري استشارة ادارات اخرى في ذلك التغيير مادمنا محافظين على العقد من خلال الAPI و سيكون التغيير اسرع.
كيف نتحول إذاً من Monolith إلى Microservices ؟
كيف نتحول إذاً من Monolith إلى Microservices ؟
تعلم من تجربتك و اخطائك فلن يأتي شخص من الخارج ليملي عليك الأنسب لك و لنظامك الذي تعرفه اكثر منه. الأنظمة الMonolith ليست في حد ذاتها مشكلة بل التوابع التي تلحقها عندما يتضخم النظام كصعوبة التعديل و التطوير.
تقنيات تقسيم الMonolith إلى Microservices استفادت من مفهوم الBounded Context في الDomain Driven Design
ففي البداية إن تم تقسيم النظام إلى اجزاء طبقاً لتقسيم الBusiness فسيكون الانتقال للMicroservices سلساً.
ففي البداية إن تم تقسيم النظام إلى اجزاء طبقاً لتقسيم الBusiness فسيكون الانتقال للMicroservices سلساً.
مهما كانت اللغة او الstack الذي تبني به سواء java او net. او pyhton او nodejs او php او Go فانت قادر على التحول إلى الMicroservcies توجد كتب كثيرة لكل stack مخصصة للMicroservcies. لكن الأهم ان تفهم الفكرة و المباديء و الأنماط قبل الانتقال للتنفيذ.
الMicroservices اصبحت جزء مهم و ممكّن للDevOps مثلها مثل استخدام الContainers بدل الطرق التقليدية. يسرع عملية التطوير و الإطلاق و المراقبة و التحسين لمن اراد الاستفادة الحقيقية من جوهر الDevOps. ذكرت مصطلحات قد تكون جديدة على البعض يمكن وضع تعليق او البحث عنها.
ودمتم.
ودمتم.
جاري تحميل الاقتراحات...