Distributed systems vs Centralized system


من الخطوات الاولي في عمل اي نظام برمجة هي تحليل ماهية النظام وما الفائدة 
حيث نقوم بتحليل النظام الي عدة اجزاء مختلفة تبعا للمطلوب من النظام عمله ففي الحالة العادية حيث نقوم بعمل نظام كامل يقوم بالخدمة علي عميل واحد وسيرفر واحد حيث يكون هذا النظام في الغالب مخصص لعميل واحد او مجموعة مستخدمين محدودي العدد مع استخدام محدود

لكن ماذا لو اردنا توسعة العمل حيث يكون باستطاعتنا قبول الملايين من المستخدمين او استخدام اكثر من سيرفر كمزودين للخدمة في حالة انقطاع احد السيرفرات تظل الخدمة فعاله  

او اذا اردنا تقسيم قواعد البيانات في حالة زياده حجم البيانات فيها او اذا اردنا زياده سرعة الرد علي طلبات المستخدمين وزياده كفاءة السيرفر ففي هذه الحاله الطريقة التقليديه في عمل الانظمة او المسماة ب Centralized system ستكون غير فعالة بالمرة 

ففي مثل هذه المشاكل نلجأ لحلول مثل Distributed system 
فكمثال لتوضيح الفكرة : 

لدينا نظام تجاري يقوم بإدارة الخدمات وهذا النظام يجب المستخدم ان يكون لديه بيانات اسم المستخدم وكلمة المرور وهذا النظام موجود علي سيرفر 

فهنا نحن نحتاج الي دراسة هذا النظام وتحليله حيث يمكننا تنفيذه بطريقة عملية 
فتبعا لعدد المستخدمين فهناك احتمالين 

الاول : عدد مستخدمين محدود مع عدد منتجات محدود فهنا لا يهم طريقة كتابة الكود لانها لن تؤثر بشكل فارق في اداء العمل 

حيث يمكننا عمل سيرفر واحد فقط يحتوي علي API يقوم بالتحقق من بيانات المستخدم و عرض واضافة المنتجات والمخازن 

الثاني : عدد مستخدمين كبير مع وجود العديد من الشركات و ملايين المنتاجات ففي هذا الاحتمال نحتاج ان نفكر قليلا كيف يمكننا ان نقوم بعمل نظام يمكنه تحمل كل هذا الضغط والطلبات عليه 

وكيف يمكننا اضافة اكثر من سيرفر تحت عمل نظام واحد وتوزيع الطلبات فيما بينها وما الغرق بين vertical scale , horizontal scale 

سنناقش العديد من المفاهيم في المواضيع القادمه المتعلقة بالانظمة الموزعة حتي يمكننا عمل انظمة يمكنها العمل في اسوأ الظروف الممكنة مع كمية مستخدمين مهولة


تعليقات