مشهد التقنيات: اللغات والأطر وقواعد البيانات
ما الخيارات المتاحة لكل طبقة من تطبيق الويب، وكيف تختار منها بناءً على متطلبات المشروع؟ ⏱ نحو 40 دقيقة.
- تعدّد طبقات تطبيق الويب وخيارات كل طبقة.
- تقارن أطر الخادم الشائعة بنقاط قوتها وما يُنتبه إليه.
- تحدد معايير اختيار التقنيات المرتبطة بالمتطلبات والقيود.
- تكتب مقترح تقنيات مبرّرًا بالمتطلبات.
١طبقات تطبيق الويب وخياراتها
بعد أن عرفنا ماذا سيفعل النظام (المتطلبات) وما بياناته (الأصناف والجداول)، نسأل: بأي أدوات سنبنيه؟ تطبيق الويب طبقات، ولكل طبقة خيارات كثيرة. مهمة المحلل في هذه الوحدة: دراسة الخيارات، ومقارنتها، واختيار الأنسب لهذا المشروع لا الأشهر ولا المفضّل شخصيًّا.
٢الخادم: اللغة والإطار
| اللغة والإطار | نقاط القوة | ما يُنتبه إليه | يناسب |
|---|---|---|---|
| PHP و Laravel | استضافة رخيصة ومنتشرة، وأدوات جاهزة (مصادقة، وصلاحيات، وقوائم انتظار)، ومجتمع عربي كبير | يحتاج انضباطًا في تنظيم الكود في المشاريع الكبيرة | أنظمة الإدارة والمتاجر والبوابات |
| Python و Django | لوحة إدارة جاهزة، وأمان افتراضي قوي، ومناسب لمشاريع البيانات | الاستضافة أقل انتشارًا من PHP | الأنظمة الكثيفة البيانات والتقارير |
| Node و Express | JavaScript في الواجهة والخادم معًا، وممتاز للاتصال الفوري | إطار صغير: تختار المكتبات وتنظّم بنفسك | واجهات API والتطبيقات الفورية |
| C# و ASP.NET | أداء عالٍ، وأدوات Microsoft المؤسسية | تكلفة الترخيص والاستضافة أحيانًا | الجهات التي تعتمد بيئة Microsoft |
٣الواجهة وقاعدة البيانات والاستضافة
| الطبقة | الخيار | متى يناسب؟ |
|---|---|---|
| الواجهة | صفحات يولّدها الخادم (Blade، قوالب Django) | نماذج وجداول وإدارة: أبسط وأسرع في البناء |
| الواجهة | تطبيق صفحة واحدة SPA (React، Vue) | تفاعل كثيف يشبه التطبيقات، أو تطبيق جوال يشارك نفس API |
| البيانات | علائقية: MySQL، PostgreSQL | بيانات مترابطة بعلاقات واضحة وتحتاج سلامة (تسجيل، ودفع) |
| البيانات | مستندات: MongoDB | بيانات مرنة البنية تتغير حقولها كثيرًا |
| الاستضافة | استضافة مشتركة | مواقع صغيرة بميزانية منخفضة |
| الاستضافة | خادم افتراضي VPS | تحكم كامل، ويحتاج من يديره ويحدّثه |
| الاستضافة | منصة سحابية PaaS | نشر سهل وتوسع تلقائي، والتكلفة تزيد مع الاستخدام |
٤معايير الاختيار: من المتطلبات لا من الذوق
الاختيار الجيد يمكن تبريره بمتطلب أو قيد، لا بعبارة «لأنه الأشهر». هذه المعايير التي نقيس بها في الدرس القادم:
| المعيار | السؤال | مثال في «دورات» |
|---|---|---|
| ملاءمة المتطلبات | هل يحقق الوظائف وغير الوظيفية بسهولة؟ | NFR-01 الأداء مع 300 مستخدم: كل الخيارات تكفي |
| مهارات الفريق | هل يعرفه الفريق؟ كم يكلف التعلم؟ | الفريق درس PHP و MySQL ← ميزة لـ Laravel |
| التكلفة | الترخيص، والاستضافة، والصيانة | ميزانية المركز محدودة ← استضافة رخيصة |
| المجتمع والدعم | هل له توثيق ومجتمع ومكتبات؟ | Laravel و Django مجتمعهما كبير |
| الأمان | هل يحمي افتراضيًّا من الثغرات الشائعة؟ | الأطر الكبيرة تحمي من حقن SQL و CSRF افتراضيًّا |
| قابلية الصيانة | هل يسهل على فريق آخر تطويره لاحقًا؟ | إطار معروف أفضل من كود مخصص |
توقّع وتحقّق
بيانات تسجيل ودفع مترابطة بعلاقات وتحتاج سلامة. أنسب قاعدة:
أقوى تبرير لاختيار Laravel لمشروع «دورات»:
«مجموعة التقنيات» Tech Stack تعني:
تطبيق جوال سيستخدم بيانات الموقع نفسها لاحقًا. ما الأنسب للواجهة؟
API واحدة تخدم الموقع والتطبيق.الخلاصة
- مجموعة التقنيات: خيار لكل طبقة: الواجهة، والخادم، والبيانات، والاستضافة.
LaravelوDjangoوExpressوASP.NETخيارات خادم لكل منها ما يناسبه.- العلائقية للبيانات المترابطة، والمستندات للبيانات المرنة.
- المعايير: ملاءمة المتطلبات، ومهارات الفريق، والتكلفة، والمجتمع، والأمان، والصيانة.
- كل اختيار يُبرَّر بمتطلب أو قيد، لا بالشهرة.
تحدٍّ تصميمي: مقترح التقنيات لـ «دورات»
متوسطاكتب مقترح التقنيات لنظام «دورات». معطيات: الفريق درس PHP و MySQL و React، والميزانية محدودة، ويتوقع المركز 300 مستخدم متزامن يوم فتح التسجيل (NFR-01)، وقد يُطلب تطبيق جوال في المرحلة الثانية.
- خيار لكل طبقة: الواجهة، والخادم، وقاعدة البيانات، والاستضافة.
- لكل خيار سبب يبدأ بـ «لأن» أو «بسبب».
- ربط سببين على الأقل بمعرّفات متطلبات (FR أو NFR).
- خطران على الأقل للمقترح مع طريقة التعامل معهما.
- خيار للواجهة
- خيار للخادم
- خيار لقاعدة البيانات
- خيار للاستضافة
- سبب للواجهة
- سبب للخادم
- سبب لقاعدة البيانات
- سبب للاستضافة
- سببان على الأقل مربوطان بمعرّفات متطلبات (FR أو NFR)
- خطران على الأقل
- كل خطر معه معالجة
💡 تلميح 1
💡 تلميح 2
(NFR-01)».نموذج واحد من إجابات كثيرة صحيحة.
- الواجهة: الخيار والسبب
- صفحات Blade للوحة الإدارة، و React لواجهة المتدرب لأن التطبيق الجوال في المرحلة الثانية سيستخدم نفس API.
- الخادم: الخيار والسبب
- Laravel لأن الفريق يعرف PHP، ولأنه يوفر المصادقة والصلاحيات جاهزة
(FR-07). - قاعدة البيانات: الخيار والسبب
- MySQL لأن بيانات التسجيل والدفع مترابطة بعلاقات وتحتاج سلامة المعاملات
(FR-02). - الاستضافة: الخيار والسبب
- خادم افتراضي VPS داخل المملكة لأنه يتحمل 300 مستخدم متزامن
(NFR-01)بتكلفة شهرية محدودة. - المخاطر والتعامل معها (كل خطر في سطر)
- خطر: ضغط يوم فتح التسجيل ← المعالجة: اختبار حمل قبل الإطلاق.
خطر: نقص خبرة الفريق في React ← المعالجة: البدء بصفحات Blade ثم الانتقال تدريجيًّا.