أساسيات التعامل مع الخوادم واختيار المناسب منها

0
305

servers-(1)

مُنذ عام 1992 – انتشار الويب لأول مرّة – وحتى العام 2005 تقريبًا، أخذت المواقع والتقنيات التي تقف خلفها شكلًاواحد لا يختلف كثيرًا. ففي ذلك الوقت كانت مُعظم الواقع تتألف من مُحتوى ثابت يتغيّر بين الفترة والثانية من قبلمُدير الخادم، وبالتالي لم تكن هُناك حاجة كبيرة للكثير من التقنيات.

ولم يكن انتشار شبكة الإنترنت كبيرًا في وقتها، وبالتالي كانت المواقع الإلكترونية مُجرّد كمالية لا ضرورة لها، لكنوبعد نهاية 2004 تغيّر كل شيء، كيف ولا ومفهوم المُدونات انتشر بشكل كبير مع ظهور نظام ووردبرس لإدارةالمُحتوى، دون نسيان شبكة فيسبوك الاجتماعية، وبالتالي ازدادت عدد الطلبات على الخوادم، وازدادت أهميةالحصول على موقع إلكتروني.

 تتألف مواقع الإنترنت بشكل عام من قواعد بيانات، ملفّات الموقع من صور وملفات HTML أو بي إتش بي، بالإضافةإلى خادم مهمّته الربط بين تلك المُكونات أولًا وطلبات المُستخدمين ثانيًا، حيث يقوم الخادم بتفسير الرابط الذي يرغبالمُستخدم بزيارته ويُعالج الطلب ويعرض جميع المُحتويات بالشكل المُناسب.

تاريخ الخودام

في عام 1995 ظهرت خوادم أباتشي Apache لأول مرّة حينما كانت شبكة الويب في بداياتها، وكما ذكرنا سابقًافإن الطلبات على المواقع لم تكن كثيرة وبالتالي كانت هذه الخوادم تؤدي الوظيفة المطلوبة دون مشاكل.

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

كانت وظيفة خوادم أباتشي تقتصر على تفسير الرابط وتحليل مُحتوياته، لتحويل الطلب إلى الصفحة المُناسبة التيتقوم بدورها بمعالجة المُدخلات وجلب البيانات المطلوبة من قاعدة البيانات قبل إعادتها للخادم الذي بدوره يقومبإظهارها للمُستخدم. بكل تأكيد تتم هذه العمليات خلال ثوانٍ معدودة، لكن وفي حالة كثرة الطلبات على الخادم تبدأالمشاكل بالظهور مثل تأخر الرد على سبيل المثال.

بدأت خوادم أباتشي تتطور مع الوقت لمعالجة الطلبات الكثيرة، لكنها لم تعد الخيار الأمثل خصوصًا أن معالجةالطلبات الكثيرة بعد تفعيل بعض الإضافات تؤدي إلى استهلاك كبير في ذاكراة الخادم ومُعالجاته، وبالتالي بدأ مُديروالخوادم بمعاينة الكثير من الأضرار.

هذا أدى بدوره إلى ظهور نوع جديد من الخوادم التي بُنيت بالأساس لمعالجة المشاكل الموجودة في أباتشي، وهيخوادم nginx التي قامت على أساس توفير حل لكثرة الطلبات دون استهلاك الكثير من موارد الخادم، وبالتالي بدأتمنذ عام 2004 في السيطرة على المشهد التقني شيئًا فشيئًا.

الفرق بين أباتشي و nginx

تبدأ مهمة الخادم كما ذكرنا في مُعالجة طلبات المُستخدم، وبالتالي تُعالج خوادم أباتشي كل طلب على حدة عبرإنشاء مهمّة له داخل النظام، فكل طلب له مهمّة تُقابله، وكل مهمّة تحتاج إلى مساحة في الذاكرة أولًا، وجزء منعمليات المُعالجة التي تتم عبر مُعالج الخادم.

ازدياد عدد الطلبات يُرافقه ازدياد في عدد المهمّات يُرافقهم نقص حاد في المساحة المتوفرة داخل الذواكر وكذلكالمُعالج، وبالتالي تبدأ حراراة الخادم بالارتفاع، أو التوقّف عن العمل بشكل كامل في بعض الحالات.

في nginx الوضع مُختلف، فهو يعمل بمبدأ المهام الغير مُتزامنة، وبالتالي يُمكن تشغيل أكتر من مهمّة في نفسالوقت، وكل مهمّة بإمكانها مُعالجة أكثر من طلب في نفس الوقت.

عند ورود طلب جديد إلى خادم من نوع nginx يتم أولًا وضعه في لائحة الانتظار قبل تنفيذه والنظر إلى نوعه، فإذا لميحتوي على مُدخلات فإن الطلب تتم مُعالجته فوريًا وتتم العودة بالنتيجة إلى المُستخدم. أما في حالة وجودمُدخلات، فإن الخادم يقوم بتفعيل مهمّة خاصة وينتقل فوريًا لمعالجة الطلب الذي يليه دون انتظار نتيجة المُدخلاتالتي سيقوم بها المُستخدم أو التي تطلبها المهمّة الأولى. بهذه الطريقة يُمكن مُعالجة أكثر من طلب في نفسالوقت دون تأخير النتيجة على المُستخدم أولًا، ودون إجهاد الخادم وزيادة عدد الطلبات الموجودة على لائحة الانتظار.

ماذا عن Node.js؟

إذا كُنت من مُطوري الويب فمُصطلح Node.js ليس بجديد عليك، فباختصار تسمح Node.js باستخدام لغة جافاسكريبتكلغة لبرمجة الخوادم، لكنها على عكس بقية لغات البرمجة الأُخرى لا تحتاج إلى خادم خاص بها مثل لغة بي اتش بيعلى سبيل المثال، حيث تحتوي على خادم HTTP لمعالجة كل شيء بنفسها دون الحاجة إلى خادم أباتشي أو nginxللقيام بهذه المهمة.

يُمكن تشبيه Node.js بتطبيق جافا الافتراضي JVM الخاص بلغة جافا، والذي يقوم بترجمة ملفات جافا بعدما يقومالخادم بتحويل الطلبات إليها.

هل هذه جميع الخوادم المتوفرة؟

بكل تأكيد ليست أباتشي أو nginx هي الخوادم المتوفرة الوحيدة، لكنها خوادم مفتوحة المصدر وهو ما ساعدهاعلى الانتشار بشكل كبير، وهي تُخدّم شريحة واسعة من لغات البرمجة مثل بي اتش بي، بايثون أو روبي. في المُقابلوكما ذكرنا سابقًا، يُمكن كتابة تطبيقات ويب دون خوادم من خلال استخدام Node.js، حيث يُمكن من خلالجافاسكريبت كتابة البرمجية وإنشاء الخادم بكل سهولة.

لغة ASP.NET من لغات برمجة الويب أيضًا، وهي مدعومة من مايكروسوفت عبر إطار عمل .NET الشهير، لكن خوادمأباتشي أو nginx لا تقوم بتفسيرها، وبالتالي يجب استخدام خوادم مايكروسوفت الخاصّة التي تُعرف باسم IIS.

لا تنحصر القائمة بهذه الخيارات فقط، وهناك الكثير من الخوادم المبنية أساسًا على الخوادم المذكورة سابقًا، لكنهاتُخدّم غايات مُحددة تختلف حسب حاجة مُدير الخادم نفسه.

لكن كيف يعمل الخادم؟

يُمكن اعتبار الخادم برنامج صغير داخل الحاسب كالآلة الحاسبة أو برنامج وورد لمعالجة النصوص، وبالتالي يجب أنيكون هناك نظام تشغيل لتشغيله. لينكس، ويندوز، أو ماك أو إس إكس من أنظمة تشغيل الخوادم، ولينكس تحديدًايمتلك عددًا غير محدودًا من التوزيعات الموجهة للخوادم فقط، لذا تجد أن مُعظم الخوادم تعمل باستخدام نظاملينكس، فهو مجاني ومفتوح المصدر وتتوفر له تطبيقات كثيرة جدًا لإدارة الحزم.

نظام تشغيل الخوادم من شركة آبل لا يُستخدم بكثيرة لإدارة طلبات الويب، بل هو موجه بشكل أساسي للشبكات بينالحواسب في الشركات الكبيرة، لكنه قادر بكل تأكيد على مُعالجة الطلبات المُختلفة أيًا كان نوعها. أما نظاممايكروسوفت للخوادم ففائدته تكمن في تشغيل خادم IIS الخاص بتفسير لغات برمجة مايكروسوفت لتطوير الويبالتي تعتمد على إطار .NET

م 1992 – انتشار الويب لأول مرّة – وحتى العام 2005 تقريبًا، أخذت المواقع والتقنيات التي تقف خلفها شكلًاواحد لا يختلف كثيرًا. ففي ذلك الوقت كانت مُعظم الواقع تتألف من مُحتوى ثابت يتغيّر بين الفترة والثانية من قبلمُدير الخادم، وبالتالي لم تكن هُناك حاجة كبيرة للكثير من التقنيات.

ولم يكن انتشار شبكة الإنترنت كبيرًا في وقتها، وبالتالي كانت المواقع الإلكترونية مُجرّد كمالية لا ضرورة لها، لكنوبعد نهاية 2004 تغيّر كل شيء، كيف ولا ومفهوم المُدونات انتشر بشكل كبير مع ظهور نظام ووردبرس لإدارةالمُحتوى، دون نسيان شبكة فيسبوك الاجتماعية، وبالتالي ازدادت عدد الطلبات على الخوادم، وازدادت أهميةالحصول على موقع إلكتروني.

 تتألف مواقع الإنترنت بشكل عام من قواعد بيانات، ملفّات الموقع من صور وملفات HTML أو بي إتش بي، بالإضافةإلى خادم مهمّته الربط بين تلك المُكونات أولًا وطلبات المُستخدمين ثانيًا، حيث يقوم الخادم بتفسير الرابط الذي يرغبالمُستخدم بزيارته ويُعالج الطلب ويعرض جميع المُحتويات بالشكل المُناسب.

تاريخ الخودام

في عام 1995 ظهرت خوادم أباتشي Apache لأول مرّة حينما كانت شبكة الويب في بداياتها، وكما ذكرنا سابقًافإن الطلبات على المواقع لم تكن كثيرة وبالتالي كانت هذه الخوادم تؤدي الوظيفة المطلوبة دون مشاكل.

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

كانت وظيفة خوادم أباتشي تقتصر على تفسير الرابط وتحليل مُحتوياته، لتحويل الطلب إلى الصفحة المُناسبة التيتقوم بدورها بمعالجة المُدخلات وجلب البيانات المطلوبة من قاعدة البيانات قبل إعادتها للخادم الذي بدوره يقومبإظهارها للمُستخدم. بكل تأكيد تتم هذه العمليات خلال ثوانٍ معدودة، لكن وفي حالة كثرة الطلبات على الخادم تبدأالمشاكل بالظهور مثل تأخر الرد على سبيل المثال.

بدأت خوادم أباتشي تتطور مع الوقت لمعالجة الطلبات الكثيرة، لكنها لم تعد الخيار الأمثل خصوصًا أن معالجةالطلبات الكثيرة بعد تفعيل بعض الإضافات تؤدي إلى استهلاك كبير في ذاكراة الخادم ومُعالجاته، وبالتالي بدأ مُديروالخوادم بمعاينة الكثير من الأضرار.

هذا أدى بدوره إلى ظهور نوع جديد من الخوادم التي بُنيت بالأساس لمعالجة المشاكل الموجودة في أباتشي، وهيخوادم nginx التي قامت على أساس توفير حل لكثرة الطلبات دون استهلاك الكثير من موارد الخادم، وبالتالي بدأتمنذ عام 2004 في السيطرة على المشهد التقني شيئًا فشيئًا.

الفرق بين أباتشي و nginx

تبدأ مهمة الخادم كما ذكرنا في مُعالجة طلبات المُستخدم، وبالتالي تُعالج خوادم أباتشي كل طلب على حدة عبرإنشاء مهمّة له داخل النظام، فكل طلب له مهمّة تُقابله، وكل مهمّة تحتاج إلى مساحة في الذاكرة أولًا، وجزء منعمليات المُعالجة التي تتم عبر مُعالج الخادم.

ازدياد عدد الطلبات يُرافقه ازدياد في عدد المهمّات يُرافقهم نقص حاد في المساحة المتوفرة داخل الذواكر وكذلكالمُعالج، وبالتالي تبدأ حراراة الخادم بالارتفاع، أو التوقّف عن العمل بشكل كامل في بعض الحالات.

في nginx الوضع مُختلف، فهو يعمل بمبدأ المهام الغير مُتزامنة، وبالتالي يُمكن تشغيل أكتر من مهمّة في نفسالوقت، وكل مهمّة بإمكانها مُعالجة أكثر من طلب في نفس الوقت.

عند ورود طلب جديد إلى خادم من نوع nginx يتم أولًا وضعه في لائحة الانتظار قبل تنفيذه والنظر إلى نوعه، فإذا لميحتوي على مُدخلات فإن الطلب تتم مُعالجته فوريًا وتتم العودة بالنتيجة إلى المُستخدم. أما في حالة وجودمُدخلات، فإن الخادم يقوم بتفعيل مهمّة خاصة وينتقل فوريًا لمعالجة الطلب الذي يليه دون انتظار نتيجة المُدخلاتالتي سيقوم بها المُستخدم أو التي تطلبها المهمّة الأولى. بهذه الطريقة يُمكن مُعالجة أكثر من طلب في نفسالوقت دون تأخير النتيجة على المُستخدم أولًا، ودون إجهاد الخادم وزيادة عدد الطلبات الموجودة على لائحة الانتظار.

ماذا عن Node.js؟

إذا كُنت من مُطوري الويب فمُصطلح Node.js ليس بجديد عليك، فباختصار تسمح Node.js باستخدام لغة جافاسكريبتكلغة لبرمجة الخوادم، لكنها على عكس بقية لغات البرمجة الأُخرى لا تحتاج إلى خادم خاص بها مثل لغة بي اتش بيعلى سبيل المثال، حيث تحتوي على خادم HTTP لمعالجة كل شيء بنفسها دون الحاجة إلى خادم أباتشي أو nginxللقيام بهذه المهمة.

يُمكن تشبيه Node.js بتطبيق جافا الافتراضي JVM الخاص بلغة جافا، والذي يقوم بترجمة ملفات جافا بعدما يقومالخادم بتحويل الطلبات إليها.

هل هذه جميع الخوادم المتوفرة؟

بكل تأكيد ليست أباتشي أو nginx هي الخوادم المتوفرة الوحيدة، لكنها خوادم مفتوحة المصدر وهو ما ساعدهاعلى الانتشار بشكل كبير، وهي تُخدّم شريحة واسعة من لغات البرمجة مثل بي اتش بي، بايثون أو روبي. في المُقابلوكما ذكرنا سابقًا، يُمكن كتابة تطبيقات ويب دون خوادم من خلال استخدام Node.js، حيث يُمكن من خلالجافاسكريبت كتابة البرمجية وإنشاء الخادم بكل سهولة.

لغة ASP.NET من لغات برمجة الويب أيضًا، وهي مدعومة من مايكروسوفت عبر إطار عمل .NET الشهير، لكن خوادمأباتشي أو nginx لا تقوم بتفسيرها، وبالتالي يجب استخدام خوادم مايكروسوفت الخاصّة التي تُعرف باسم IIS.

لا تنحصر القائمة بهذه الخيارات فقط، وهناك الكثير من الخوادم المبنية أساسًا على الخوادم المذكورة سابقًا، لكنهاتُخدّم غايات مُحددة تختلف حسب حاجة مُدير الخادم نفسه.

لكن كيف يعمل الخادم؟

يُمكن اعتبار الخادم برنامج صغير داخل الحاسب كالآلة الحاسبة أو برنامج وورد لمعالجة النصوص، وبالتالي يجب أنيكون هناك نظام تشغيل لتشغيله. لينكس، ويندوز، أو ماك أو إس إكس من أنظمة تشغيل الخوادم، ولينكس تحديدًايمتلك عددًا غير محدودًا من التوزيعات الموجهة للخوادم فقط، لذا تجد أن مُعظم الخوادم تعمل باستخدام نظاملينكس، فهو مجاني ومفتوح المصدر وتتوفر له تطبيقات كثيرة جدًا لإدارة الحزم.

نظام تشغيل الخوادم من شركة آبل لا يُستخدم بكثيرة لإدارة طلبات الويب، بل هو موجه بشكل أساسي للشبكات بينالحواسب في الشركات الكبيرة، لكنه قادر بكل تأكيد على مُعالجة الطلبات المُختلفة أيًا كان نوعها. أما نظاممايكروسوفت للخوادم ففائدته تكمن في تشغيل خادم IIS الخاص بتفسير لغات برمجة مايكروسوفت لتطوير الويبالتي تعتمد على إطار .NET

المصدر