Improving Performance of Software Systems on Backend Level

ما ذكر هو ليس استقصاء لكيفية تحسين أداء الـ Backend وإنما أهم الطرق لذلك, فهناك أمور أخرى تفيد في كيفية تحسين الأداء, أو أمور تركت بحيث تفرد في المقالات القادمة بشكل مستقل, كما في ما  يتعلق بقواعد البيانات من حيث التصميم والإدارة
Improving Performance of Software Systems on Backend Level
Improving Performance of Software Systems on Backend Level

في هذه الصفحة

المقدمة

سنتناول في هذا المقال بعض النصائح لتحسين الأداء في الـ Backend ، ولقد تناولنا في مقال سابق كيفية تحسين الأداء على مستوى الـ Frontend ويمكنكم مشاهدة المقال من هنا

Improving Performance of Software Systems on Frontend Level
مع ثورة التطور التي طرأت على مجال الـ Frontend Development على مستوى المفاهيم و المعماريات وما قام عليهما من تقنيات وأطر عمل تُعمل تلك المفاهيم في تطوير الواجهات الأمامية وأصبح لمستوى الـ Frontend في النظم والتطبيقات البرمجية دور مهم جداً في تحسين أداء عملها

Code & Programming Logic

وأقصد به كتابة الكود وفق المنطق السليم وتعقيد زمني سريع في بناء واختيار الخوارزميات وهياكل البيانات, فأحد أهم وظائف الـ Backend في إطار الأنظمة والتطبيقات, هو تنفيذ العمليات المنطقية في الإدارة والتنظيم للعمليات والمعلومات في النظام ، وعلى ذلك لابد من ضمان سرعة تنفيذ هذه المهام والعمليات بأفضل طريقة وأسرع مدة


Multithreaded Programming & Asynchronous Programming

من المهم جداً بالنسبة لمبرمج ال backend عن يدرك الفرق بين مفهومي ال Multithreading و ال asynchronous programming 

حتى يراعي الأنسب في بناء الأنظمة والتطبيقات فتطبيقهما بشكل صحيح يحقق:

  1. تنفيذ العمليات ومعالجة الطلبات بشكل سريع
  2. استيعاب ضغط الطلبات وكثرتها بشكل متزامن Concurrency

فإذا كان النظام يعتمد في الأساس على عمليات معالجة تستند إلى CPU bound tasks  كالعمليات الحسابية المعقدة مثلاً، فمن الأفضل أن يستخدم في هذه الحالة لغات البرمجة وأطر العمل التي تدعم الـ Multi threading.

وفي حال كان النظام يعتمد على عمليات I/o bound  مثل التعامل مع الملفات او إرسال طلبات http من الأفضل الاعتماد على لغات البرمجة وأطر العمل التي تدعم ال asynchronous programming.

ولا يوجد مانع من الاستخدام الاثنين في لغة وإطار يدعم الاثنين, ولكن المشكلة ستظهر في حال فقد أحدهما مع الحاجة إليه فإن فارق الأداء سيظهر حينها بشكل ملحوظ عندما يبدأ ال requests load القوي على النظام>

وعلى الرغم من لغات البرمجة واطر العمل تدير الـ threads في وال asynchronous operation  بشكل يساعد المبرمج إلى حد كبير, فإن ذلك لا يخلي بالكامل مسؤولية المبرمج في الفهم والتعامل معهما بالشكل الصحيح في الكود  


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀

آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة

مستنينكوا تنورونا , وده رابط القناة 👇

https://t.me/eqraatechcom


Caching

وهو أحد  أهم الركائز المعتمدة في تحسين الأداء في الـ Backend, فهو يختصر وقت إجراء الاستعلامات queries على قواعد البيانات في حالات معينة دون الرجوع إلى قاعدة البيانات والتي تستهلك وقتاً أكبر في إحضار البيانات.

لأن قواعد البيانات تخزن في الـ Hard disk إضافة لتخزين كل بيانات النظام بالعلاقات المركبة بينها, بينما يتميز الـ Cache بسرعة إحضار البيانات لأنها مخزنة على الذاكرة المؤقتة, إضافة لقلة البيانات وتخزينها على شكل documents بمفتاح وقيمة بعيداً عن تعقيد العلاقات في قواعد البيانات من نوع SQL.

لكن لابد من إدارة الـ Cache بالطريقة الصحيحة بما يضمن عدد من الأمور كامتلائها ببيانات كثيرة واستهلاك مساحة الـ  memory, أو احتوائها على بيانات قديمة غير محدَّثة ويمكن أن نفرد الحديث في ذلك في موضع آخر.


Payload Size

مثال على ذلك البيانات المسترجعة من الـ API, فإن كثرة البيانات يؤدي إلى بطئ في الاستجابة والعرض, ومن الحلول لذلك الـ pagination وإدارة البيانات المسترجعة بحيث لا تزيد تفاصيله عن الحاجة في العرض في الـ Frontend أو غرض استهلاك البيانات في التواصل الداخلي بين خدمات الـ Backend الموزعة في حالة الـ microservices.


في الختام

وما ذكر هو ليس استقصاء لكيفية تحسين أداء الـ Backend وإنما أهم الطرق لذلك, فهناك أمور أخرى تفيد في كيفية تحسين الأداء, أو أمور تركت بحيث تفرد في المقالات القادمة بشكل مستقل, كما في ما  يتعلق بقواعد البيانات من حيث التصميم والإدارة Database designing and management system, أو فيما يتعلق بـ  البنية التحتية والمعمارية.

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!