في هذه الصفحة
المقدمة
سنتناول في هذا المقال بعض النصائح لتحسين الأداء في الـ Backend ، ولقد تناولنا في مقال سابق كيفية تحسين الأداء على مستوى الـ Frontend ويمكنكم مشاهدة المقال من هنا
Code & Programming Logic
وأقصد به كتابة الكود وفق المنطق السليم وتعقيد زمني سريع في بناء واختيار الخوارزميات وهياكل البيانات, فأحد أهم وظائف الـ Backend في إطار الأنظمة والتطبيقات, هو تنفيذ العمليات المنطقية في الإدارة والتنظيم للعمليات والمعلومات في النظام ، وعلى ذلك لابد من ضمان سرعة تنفيذ هذه المهام والعمليات بأفضل طريقة وأسرع مدة
Multithreaded Programming & Asynchronous Programming
من المهم جداً بالنسبة لمبرمج ال backend عن يدرك الفرق بين مفهومي ال Multithreading و ال asynchronous programming
حتى يراعي الأنسب في بناء الأنظمة والتطبيقات فتطبيقهما بشكل صحيح يحقق:
- تنفيذ العمليات ومعالجة الطلبات بشكل سريع
- استيعاب ضغط الطلبات وكثرتها بشكل متزامن Concurrency
فإذا كان النظام يعتمد في الأساس على عمليات معالجة تستند إلى CPU bound tasks كالعمليات الحسابية المعقدة مثلاً، فمن الأفضل أن يستخدم في هذه الحالة لغات البرمجة وأطر العمل التي تدعم الـ Multi threading.
وفي حال كان النظام يعتمد على عمليات I/o bound مثل التعامل مع الملفات او إرسال طلبات http من الأفضل الاعتماد على لغات البرمجة وأطر العمل التي تدعم ال asynchronous programming.
ولا يوجد مانع من الاستخدام الاثنين في لغة وإطار يدعم الاثنين, ولكن المشكلة ستظهر في حال فقد أحدهما مع الحاجة إليه فإن فارق الأداء سيظهر حينها بشكل ملحوظ عندما يبدأ ال requests load القوي على النظام>
وعلى الرغم من لغات البرمجة واطر العمل تدير الـ threads في وال asynchronous operation بشكل يساعد المبرمج إلى حد كبير, فإن ذلك لا يخلي بالكامل مسؤولية المبرمج في الفهم والتعامل معهما بالشكل الصحيح في الكود
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉
بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀
آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة
مستنينكوا تنورونا , وده رابط القناة 👇
Caching
وهو أحد أهم الركائز المعتمدة في تحسين الأداء في الـ Backend, فهو يختصر وقت إجراء الاستعلامات queries على قواعد البيانات في حالات معينة دون الرجوع إلى قاعدة البيانات والتي تستهلك وقتاً أكبر في إحضار البيانات.
لأن قواعد البيانات تخزن في الـ Hard disk إضافة لتخزين كل بيانات النظام بالعلاقات المركبة بينها, بينما يتميز الـ Cache بسرعة إحضار البيانات لأنها مخزنة على الذاكرة المؤقتة, إضافة لقلة البيانات وتخزينها على شكل documents بمفتاح وقيمة بعيداً عن تعقيد العلاقات في قواعد البيانات من نوع SQL.
لكن لابد من إدارة الـ Cache بالطريقة الصحيحة بما يضمن عدد من الأمور كامتلائها ببيانات كثيرة واستهلاك مساحة الـ memory, أو احتوائها على بيانات قديمة غير محدَّثة ويمكن أن نفرد الحديث في ذلك في موضع آخر.
Payload Size
مثال على ذلك البيانات المسترجعة من الـ API, فإن كثرة البيانات يؤدي إلى بطئ في الاستجابة والعرض, ومن الحلول لذلك الـ pagination وإدارة البيانات المسترجعة بحيث لا تزيد تفاصيله عن الحاجة في العرض في الـ Frontend أو غرض استهلاك البيانات في التواصل الداخلي بين خدمات الـ Backend الموزعة في حالة الـ microservices.
في الختام
وما ذكر هو ليس استقصاء لكيفية تحسين أداء الـ Backend وإنما أهم الطرق لذلك, فهناك أمور أخرى تفيد في كيفية تحسين الأداء, أو أمور تركت بحيث تفرد في المقالات القادمة بشكل مستقل, كما في ما يتعلق بقواعد البيانات من حيث التصميم والإدارة Database designing and management system, أو فيما يتعلق بـ البنية التحتية والمعمارية.