عمرك فكرت إزاي المنصات الكبيرة زي فيسبوك وتيك توك بدأت؟ وهل كانوا متخيلين يوصلوا للي هما فيه؟
بالاطلاع علي تاريخ منصات كتير من المنصات اللي موجوده حاليا في السوق حوالينا حاجات زي فيس بوك او تيك توك
هنلاحظ ان المنصات ده مكانتش بنفس الشكل اللي اتبنت عليه من اول يوم طلعت فيه من ناحية الهندسة المعمارية وبنية السيرفرات
والسؤال هنا هو ايه سبب التغير اللي حصل هل كان ضروري ؟
هنلاحظ ان المنصات تحولت من منصات مقتصرة في دولة معينة لمنصات عالمية فيها مستخدمين من كل العالم
وعدد المستخدمين نفسه اتغير قواعد البيانات كبرت الملفات المخزنة كترت
بقي في داتا كتير لازم تتهندل في العملية الواحده
وهنا ظهرت المشاكل مشاكل في التصاميم الاولية اللي اتعملت الداتا بتاخد وقت عشان تتهندل
قواعد البيانات بقت محتاج موارد عاليه عشان ترجع الداتا
بقينا نواجه مشاكل ان زمن الاستجابة بيتاخر بين دولة والتانية بناءا علي الموقع الجغرافي
كل ده حاجات ظهرت مع الاستعمال ومن هنا يظهر الجوهر بتاع system design
فممكن نلخص تعلمنا لل system design انه العلم اللي بيخلينا قادرين علي عمل نظام يكون قابل للتحسين قابل لمواجهة الصعوبات والمشاكل
ففي system design احنا دائما بنفترض اسوا السيناريوهات اللي ممكن يتعرضها النظام الحالات اللي ممكن النظام يفصل فيها ويبقي
خارج الخدمة
حالات ممكن تكون فيها الداتا بيز مش قادر تستجيب او معمولها lock
وطبعا كل سيناريو من دول بيبقي ليه حلول خاصه وصلنا ليه بعد تجربتها في سيناريوهات مختلفة
فممكن نقول ان system design هي نسخة من design patterns في جوهرها مش بالمعني الحرفي
طبعا قبل ما ندخل في في التفاصيل بتاعت تصميم الانظمة و ازاي نعمل نظام كفئ انه يشتغل
لازم نتكلم عن مراحل عمل اي نظام واي سيستم بنشوفه من حوالينا
وممكن نلخصها في المراحل ده بمثال من ارض الواقع
انا مبرمج جاتلي شركة وعايزه تعمل برنامج اداري داخل الشركة
دلوقتي انا بقي عندي فكرة عامة اني محتاج اصمم برنامج اداري
لازم بقي ساعتها ابدا ادرس البرنامج وتفاصيله ادرس البرنامج هيشتغل ازاي ايه المشاكل اللي موجوده في الشركة وهما عايزيني اعمل النظام ده
عشان يحلها ليهم
وبالتالي ممككن نكون بدانا اول مرحلة هي مرحلة التخطيط المرحلة اللي بنعرف فيها المطلوب مننا المطلوب نعمله وننفذه
المرحلة اللي لازم يكون عندينا المتطلبات بتاعت النظام واضحة جدا عشان هيتبني عليها الشغل كامل بعدين
المرحلة اللي بعد كده هي مرحلة ما قبل التنفيذ ليها اسماء كتيرة بس انا حابب اسمها ما قبل التنفيذ لانها فعليا بيتم جواها تحديد طريقة تصميم السيستم
طريقة بناءه ازاي انا هكتب الكود وازاي هتعامل مع كل جزء من الكود
بالاخذ بالاعتبار مثلا السيستم الاداري بعد ما قعدت مع موظفين الشركة
خلاص وصلنا ان النظام لازم يكون جواه معالجة لطلبات الشراء والمرتجع وادارة شاملة للمخازن والموظفين
فدلوقتي انا عندي عناصر اساسية لازم بقي احدد طريقة ربط العناصر ده ببعض طريقة تنظيم الشغل فيما بينهم طريقة التعامل مع كل وحده في النظام
علي حدي وطريقة التعامل مع كل وحده في النظام علي نطاق النظام ككل
والمرحلة ده اللي بنبدا فيها نحدد workflow بتاع النظام بحيث اننا نوصل للحل الامثل للمشكلة اللي الشركة كلمتنا من الاول عشان نحلها
المرحلة التالته بقي وهي مرحلة التنفيذ واننا بنبدا ننفذ المخططات والافكار اللي وصلنا ليها بعد ما حددنا نوع قواعد البيانات اللي هنتعامل بيها وبعد ما
حددنا كمان المتطلبات اللي المفروض نعتمدها داخل النظام
المرحلة الرابعة باختصار هي مرحلة الاختبار والتيست اننا نتاكد اننا عملنا شغل كويس عموما وطبعا المرحلة ده بتبقي فيها مشاكل كتير بتظهر خصوصا
لو المبرمجين المرحلة التالته ملتزموش قوي بالتصاميم والمعايير المحطوطة بس احنا فيها المرحلة ده عشان نكشف اخطاء المبرمجين ونصلحها (ونخصملهم كمان )
المرحلة الخامسة والسادسة ممكن نختصرهم في كلمتين مرحلة رفع المشروع وجعله متاح للعامة والانتاج ومرحلة الصيانة والتاكد من فعالية السيستم
وطبعا المرحلة ده منقدرش نحدد ليها وقت معين يعني لو الشركة حبت تضيف اكستشنن جديد في السيستم او توسع جزء منه او تضيع عمليات جديدة
وكده ممكن نكون ناقشنا اغلب النقاط العامة اللي حوالين system design ليه محتاجينه في حياتنا ليه هو ليه تاثير كبيرة علي مجالنا المهني كمهندسين
لا يوجد تعليقات
أضف تعليق