من الخطوات الاولي في عمل اي نظام برمجة هي تحليل ماهية النظام وما الفائدة
حيث نقوم بتحليل النظام الي عدة اجزاء مختلفة تبعا للمطلوب من النظام عمله ففي الحالة العادية حيث نقوم بعمل نظام كامل يقوم بالخدمة علي عميل واحد وسيرفر واحد حيث يكون هذا النظام في الغالب مخصص لعميل واحد او مجموعة مستخدمين محدودي العدد مع استخدام محدود
لكن ماذا لو اردنا توسعة العمل حيث يكون باستطاعتنا قبول الملايين من المستخدمين او استخدام اكثر من سيرفر كمزودين للخدمة في حالة انقطاع احد السيرفرات تظل الخدمة فعاله
او اذا اردنا تقسيم قواعد البيانات في حالة زياده حجم البيانات فيها او اذا اردنا زياده سرعة الرد علي طلبات المستخدمين وزياده كفاءة السيرفر ففي هذه الحاله الطريقة التقليديه في عمل الانظمة او المسماة ب Centralized system ستكون غير فعالة بالمرة
ففي مثل هذه المشاكل نلجأ لحلول مثل Distributed system
فكمثال لتوضيح الفكرة :
لدينا نظام تجاري يقوم بإدارة الخدمات وهذا النظام يجب المستخدم ان يكون لديه بيانات اسم المستخدم وكلمة المرور وهذا النظام موجود علي سيرفر
فهنا نحن نحتاج الي دراسة هذا النظام وتحليله حيث يمكننا تنفيذه بطريقة عملية
فتبعا لعدد المستخدمين فهناك احتمالين
الاول : عدد مستخدمين محدود مع عدد منتجات محدود فهنا لا يهم طريقة كتابة الكود لانها لن تؤثر بشكل فارق في اداء العمل
حيث يمكننا عمل سيرفر واحد فقط يحتوي علي API يقوم بالتحقق من بيانات المستخدم و عرض واضافة المنتجات والمخازن
الثاني : عدد مستخدمين كبير مع وجود العديد من الشركات و ملايين المنتاجات ففي هذا الاحتمال نحتاج ان نفكر قليلا كيف يمكننا ان نقوم بعمل نظام يمكنه تحمل كل هذا الضغط والطلبات عليه
وكيف يمكننا اضافة اكثر من سيرفر تحت عمل نظام واحد وتوزيع الطلبات فيما بينها وما الغرق بين vertical scale , horizontal scale
سنناقش العديد من المفاهيم في المواضيع القادمه المتعلقة بالانظمة الموزعة حتي يمكننا عمل انظمة يمكنها العمل في اسوأ الظروف الممكنة مع كمية مستخدمين مهولة