مقدمة
لقد أصبحت التكنولوجيا والإنترنت عنصرين أساسيين في حياتنا اليومية والأكاديمية والمهنية. ولهذا السبب، فإن العدد الهائل من مواقع الويب والتطبيقات الموجودة في وقت واحد لا يشكل مفاجأة. إذا كنت صاحب عمل، فسترغب في امتلاك منصة ويب مرتبطة به. يتيح لك التطبيق تسويق خدماتك وتقديمها إلى عملائك المستهدفين بكل سهولة.
بغض النظر عن سبب إنشائك لـ تطبيق ويب، فأنت بحاجة إلى تحديد كيفية بنائه. هناك العديد من الخيارات المتاحة لك عندما يتعلق الأمر باختيار أفضل إعداد للخادم. ستحدد بنية الخادم التي تختارها كيفية تشغيل وإدارة كل شيء في بيئتك. ولهذا السبب يجب اتخاذ القرار بعد دراسة متأنية.
كيفية اختيار إعداد الخادم المناسب
إذن كيف تقرر أي بنية هي 'المناسبة' لتطبيقك؟ للقيام بذلك، عليك أولاً التفكير في متطلبات تطبيق الويب الخاص بك. يجب أن تكون هناك ميزات معينة يتعين عليك دمجها ليعمل بكفاءة في حالتك الاستخدامية المحددة. على سبيل المثال، ربما تسعى للحصول على تطبيق يسهل توسيع نطاقه. أو ربما تحتاج إلى أن يعمل تطبيقك بسلاسة على المتصفحات وكذلك الأجهزة المحمولة. وفي الوقت نفسه، قد تكون ميزانيتك هي شاغلك الرئيسي أيضًا.
بغض النظر عن متطلباتك، يجب أن تعلم أنه يمكنك إنشاء حل مخصص لتطبيقك. في هذا البرنامج التعليمي، سنستكشف الأنواع المختلفة من الخوادم التي يستخدمها العديد من الأشخاص بشكل شائع لتطبيقات الويب الخاصة بهم. سنتحدث عن حالات الاستخدام المختلفة ومتى يكون من الأفضل استخدام إعداد معين. ولمساعدتك في تحديد ما إذا كان مناسبًا لك، سنقدم لك أيضًا بعض المزايا والعيوب لكل بنية خادم.
1. كل شيء على خادم واحد
كما يوحي الاسم، تقوم بتحميل البيئة بأكملها على خادم واحد وفردي. ستشمل البيئة خادم الويب وخادم التطبيقات بالإضافة إلى خادم قاعدة البيانات. على سبيل المثال، يعمل هذا على تكوين حزمة Linux, Apache, MySQL، و PHP (LAMP). يمكنك متابعة دروسنا التعليمية حول كيفية تثبيت حزمة LAMP على خادم Ubuntu وكيفية تثبيت حزمة LAMP على CentOS.

متى يُستخدم:
يعمل هذا النوع من الترتيب بشكل أفضل إذا كان وقتك ضيقًا. فهو بسيط وسريع الإعداد. ولهذا السبب فهو مناسب لتطبيقات الويب البسيطة.
المزايا:
- بسيط وسهل الفهم والتنفيذ.
- يستغرق إعداده بالكامل وقتًا قصيرًا.
العيوب:
- لا يسمح بالتوسع الأفقي.
- يقدم القليل جدًا فيما يتعلق بعزل المكونات.
- يتنافس التطبيق وقاعدة البيانات بشكل أساسي على نفس الموارد نظرًا لوجودهما على خادم واحد.
- ونتيجة لذلك، قد تواجه ضعفًا في الأداء.
2. خادم قاعدة بيانات منفصل
المشكلة الرئيسية في استخدام خادم واحد هي التنافس على الموارد المحدودة. يهدف هذا الإعداد إلى حل هذه المشكلة. هنا، يتم الاحتفاظ بـ نظام إدارة قواعد البيانات، أو DBMS، منفصلاً عن خادم التطبيقات. يقع خادم قاعدة البيانات في شبكة خاصة وله موارده الخاصة. يؤدي هذا إلى أداء أفضل وأمان متزايد.

متى يُستخدم:
مرة أخرى، إذا كنت تريد نشر إعداد سريع، فإن تكوين هذا الإعداد بسيط للغاية. إنه الحل المثالي إذا كنت قلقًا بشأن تنافس قاعدة البيانات والتطبيق على نفس الموارد.
المزايا:
- موارد نظام منفصلة ومخصصة لكل من التطبيق وقاعدة البيانات، بما في ذلك وحدة المعالجة المركزية (CPU)، والذاكرة، والإدخال/الإخراج (I/O)، وما إلى ذلك.
- إمكانية أكبر للتوسع في أي من طبقتي التطبيق وقاعدة البيانات.
- يمكنك إضافة الموارد وإزالتها حسب حاجتك.
- إذا قمت بإزالة قاعدة البيانات من شبكة الإنترنت العامة، فيمكنك تعزيز أمانك أيضًا.
العيوب:
- أكثر تعقيدًا بقليل من إعداد الخادم الواحد.
- يمكن أن يؤدي انخفاض عرض النطاق الترددي أو زمن الانتقال العالي للاتصال بالشبكة بين الخادمين إلى حدوث مشكلات في الأداء.
3. الوكيل العكسي أو موازن التحميل
هذا هو المكان الذي موازنات التحميل تظهر في الصورة. تُستخدم موازنات التحميل عادةً في بيئات الخوادم لتحسين الأداء والموثوقية. وهي تفعل ذلك من خلال 'موازنة التحميل'؛ أي توزيع عبء العمل عبر مجموعة من الخوادم.

متى يُستخدم:
تعد موازنات التحميل مفيدة للغاية عندما تحتاج إلى إجراء التوسيع الأفقي. ويعني التوسيع الأفقي أساسًا إضافة المزيد من الخوادم إلى البيئة. يمكنك أيضًا استخدام وكيل عكسي لطبقة التطبيقات لخدمة عدة تطبيقات في وقت واحد باستخدام نطاق ومنفذ واحد. HAProxy, Nginx، و Varnish هي أمثلة على البرامج التي تسمح بموازنة تحميل الوكيل العكسي.
الفوائد:
- في حالة تعطل أحد الخوادم في المجموعة، تعوض الخوادم الأخرى وظيفته عن طريق موازنة عبء العمل.
- يتيح لك إجراء التوسيع الأفقي لزيادة أو تقليل سعة البيئة.
- كما أنه يحد من اتصالات العملاء مما يوفر الحماية ضد هجمات DDOS.
العيوب:
- في حال لم تكن موارد النظام كافية، فقد يحد موازن التحميل من أداء تطبيقك.
- يلزم الإعداد الصحيح لضمان الأداء السليم.
- أكثر تعقيدًا بكثير من إعدادات الخادم الفردي أو الخوادم المنفصلة.
- يتعين عليك مراعاة عوامل مثل إنهاء SSL والتطبيقات التي تحتاج إلى جلسات ثابتة.
- مكمن القلق الرئيسي في استخدام موازنات التحميل هو أنها تشكل نقطة فشل واحدة. هذا يعني أنه إذا فشل موازن التحميل في العمل، فستتوقف خدمتك بالكامل.
4. مسرع HTTP أو الوكيل العكسي للتخزين المؤقت
هذا إعداد يمكنك استخدامه لزيادة السرعة التي تقدم بها المحتوى لمستخدم تطبيقك. وهو يستخدم تقنيات مختلفة لتقليل هذا الوقت. وأهمها هو التخزين المؤقت للاستجابة من خادم التطبيق. يحفظ المسرع المحتوى في ذاكرته عندما يطلبه المستخدم لأول مرة. وبالتالي، عندما تأتي أي طلبات مستقبلية مماثلة، فإنه يقدم المحتوى بسرعة دون التفاعل مع خادم التطبيق. كل من Nginx و Varnish و Squid قادرة على تسريع HTTP.

متى يُستخدم:
من المفهوم أن هذا الإعداد هو الأكثر ملاءمة للملفات والمحتوى الذي يطلبه المستخدمون بشكل متكرر للغاية. كما أنه يعمل بشكل جيد جدًا مع تطبيقات الويب الديناميكية الغنية بالمحتوى.
الفوائد:
- يؤدي التخزين المؤقت والضغط إلى زيادة سرعة التطبيق ومعالجة الطلبات بشكل كبير.
- كما أن تقليل الحمل على وحدة المعالجة المركزية يحسن أداء الموقع.
- يمكنك أيضًا استخدام هذا كموازن تحميل وكيل عكسي.
العيوب:
- يجب عليك ضبطه جيدًا لاستخراج أفضل أداء له.
- قد تواجه أداءً ضعيفًا في حال كان معدل إصابة ذاكرة التخزين المؤقت منخفضًا.
5. تكرار قاعدة البيانات بين الأساسي والنسخة المتطابقة
عادةً ما يكون إعداد تكرار قاعدة البيانات بين الأساسي والنسخة المتطابقة مفيدًا جدًا للأنظمة التي تقوم بعمليات قراءة أكثر من عمليات الكتابة. على سبيل المثال، يمكن لأنظمة إدارة المحتوى الاستفادة حقًا من مثل هذه البنية. تحتاج إلى عقدة أساسية واحدة وعقدة تكرار واحدة أو أكثر للتكرار. حيث يقوم بتوزيع عمليات القراءة عبر جميع العقد. وتذهب التحديثات فقط إلى العقدة الأساسية.

متى يُستخدم:
كما ذكرنا، يساعد إعداد قاعدة البيانات القائم على التكرار في تحسين أداء القراءة للنظام. يمكنك استخدامه لتطبيقات مثل CMS.
الفوائد:
- فهو يحسن أداء القراءة لقاعدة البيانات حيث يوزعها عبر النسخ المتطابقة.
- إذا كنت تستخدم العقدة الأساسية للتحديثات فقط، فيمكنك أيضًا تحسين أداء الكتابة.
العيوب:
- يجب أن يكون أي تطبيق يحاول الوصول إلى قاعدة البيانات قادرًا على تحديد العقدة التي يرسل إليها التحديثات وطلبات القراءة.
- في حالة تعطل النسخة الأساسية، تتوقف التحديثات. ويتعين عليك حل المشكلة للسماح باستمرار التحديثات.
- لا توجد آلية تجاوز الفشل للتعامل مع التعطل المحتمل للعقدة الأساسية.
استخدام إعدادات الخادم مجتمعة
لحسن الحظ، من الممكن أيضًا دمج تقنيات مختلفة للحصول على النتيجة المرجوة. وهذا يعني أنه يمكنك موازنة تحميل خوادم التطبيقات مع خوادم التخزين المؤقت في بيئة واحدة وتكرار قاعدة البيانات. يتيح لك القيام بذلك الاستفادة من وظائف كلا الخادمين. ومع ذلك، فإن هذا لا يجعل الإعداد أكثر تعقيدًا أو إزعاجًا.
مثال:
سنحاول فهم مثل هذه البيئة من خلال مثال:

في مثل هذه البيئة، سيقوم موازن التحميل بإرسال الطلبات الثابتة إلى خوادم التخزين المؤقت. المحتوى الثابت يشمل أمثال CSS والصور و Javascript وغيرها. وسيقوم بتوجيه أي نوع آخر من طلبات المحتوى إلى خوادم التطبيقات بدلاً من ذلك.
دعنا نفترض أن مستخدمًا يطلب بعض المحتوى الثابت من البيئة. إليك ما سيحدث:
- سيحدد موازن التحميل أولاً ما إذا كان المحتوى عبارة عن cache-hit أو cache-miss. يكون محتوى cache-hit موجودًا في التخزين المؤقت بينما لا يكون محتوى cache-miss موجودًا هناك. ويقوم بذلك عن طريق التحقق من الـ cache-backend.
- في حال كان cache-hit، يرسل موازن التحميل المحتوى إلى المستخدم.
- في حال كان cache-miss، يقوم خادم التخزين المؤقت بتوجيه الطلب إلى الـ backend الخاص بالتطبيق.
- سيقوم الـ app-backend بالعثور على المحتوى وإرساله من قاعدة البيانات.
- يستقبل الـ cache-backend المحتوى من موازن التحميل. كما يقوم أيضًا بتخزين هذا المحتوى مؤقتًا قبل إعادته إلى موازن التحميل.
- ثم يقوم الأخير بتوجيه الاستجابة إلى المستخدم.
من ناحية أخرى، إليك ما سيحدث إذا طلب المستخدم محتوى ديناميكيًا:
- سيرد الطلب من المستخدم إلى موازن التحميل.
- يصل هذا الطلب إلى الـ app-backend.
- يحدد الـ app-backend موقع المحتوى المطلوب ويعيده إلى موازن التحميل.
- يتلقى المستخدم المحتوى.
تتمثل إحدى الفوائد الرئيسية لهذه البيئة المشتركة في أنها أكثر موثوقية. ليس هذا فحسب، بل إنها تتمتع أيضًا بقدرات أداء فائقة. ومع ذلك، لا تزال هناك نقطتا فشل فرديتان - موازن التحميل وخادم قاعدة البيانات الأساسي.
الخاتمة
يمكنك استخدام كل إعداد خادم بمفرده في بيئتك. ومن ناحية أخرى، يمكنك أيضًا دمج اثنين منها معًا لإنشاء حل مخصص. لا توجد إجابة "صحيحة". كل هذا يتوقف على الوظائف التي ترغب في استخلاصها من البنية المعمارية.
إن امتلاك معرفة على المستوى التأسيسي حول كيفية عمل كل إعداد خادم سيساعدك على اتخاذ القرار بشأن تطبيقك الخاص. أفضل ما يمكنك فعله هو البدء بشكل صغير وبسيط. يمكنك الاستمرار في زيادة تعقيد إعدادك مع اكتسابك الخبرة.
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.