القابلية للتوسعة والأداء
القابلية للتوسعة والأداء، من أهداف تصميم الأنظمة الكبيرة بشكل جيد لابد من اعتبار القابلية للتوسعة ، فمن فوائد
قابلية التوسعة وجود متسع من الموارد والخدمات للمستخدمين الجدد، وزيادة الموارد المادية من سعة تخزين، ومعالجات لتلبية احتياجات المستخدمين، ثم قياس أداء النظام ومعرفة العيوب والعمل على حل المشاكل التي تحد من استخدام
النظام بكفاءة.
ما هي القابلية للتوسعة والأداء
يشير مصطلح قابلية التوسعة إلى قدرة النظام في معالجة كمية كبيرة من العمليات، أو قدرة النظام في استيعاب نمو
عدد المستخدمين، وعندما يقال أن النظام قادر على التوسعة بشكل جيد، فيشير ذلك إلى كفاءة النظام، والأداء الجيد، ويمكن الاعتماد عليه في حالة زيادة الأحمال، وهو تطبيق عملية التوزيع والتحمل الخاص بالأخطاء.
القابلية للتوسعة والأداء عمليتان مقترنتان، فإذا كان النظام يمكنه التوسع والزيادة بشكل جيد، فهذا يعني أن النظام يمكنه العمل بشكل يناسب الزيادة، وبالتالي تحسين الأداء، وتعتبر قابلية التوسع من العوامل المهمة في تصميم النظام لقدرتها
في معالجة عمليات المستخدمين، وحجم البيانات، ومتطلبات معالجة البيانات بدون نقص في الأداء، أو الحاجة إلى إعادة تصميم.
أهمية القابلية للتوسعة والأداء
قابلية التوسع تعد أساس في تصميم النظام، وتضمن نمور وتطور النظام بمرور الوقت لتلبية حاجات المستخدمين، وتوفر
مرونة وأداء على أعلى مستوى، وتحسن من الاعتماد على النظام، وتوفيره لعدد أكبر من المستخدمين.
-
معالجة النمو (Handle Growth):
تساهم قابلية التوسع معالجة التطور السريع للنظام، والزيادة في أعداد المستخدمين، وأحجام البيانات الهائلة، بدون الحاجة لخفض الأداء، أو تقليل مدى الاعتماد على النظام، وهذا الأمر من أساسيات الشركات التجارية التي تهدف إلى توسيع عملياتها والوصول إلى جمهور أكبر بمرور الوقت.
-
تحسين الأداء (Improve Performance):
بشكل أساسي تساعد قابلية التوسع في تحسين أداء النظام وقدرته في التكيف مع الأعداد الكبيرة من البيانات والموارد، ويمكن تحسين أداء النظام عن طريق توزيع الأحمال على عدة موارد أو خوادم، لتقليل وقت الاستجابة، وتحسين الإنتاجية وتجربة المستخدم، وكل هذا يتم عن طريق قابلية التوسع.
-
ضمان التوفر (Ensure Availability):
يمكن لقابلية التوسع تحسين توفر النظام عن طريق ضمان أن النظام يمكنه تحمل الأخطاء التي تحدث بشكل مستمر والتي تحتاج إلى قابلية الصيانة، والتوفر من العوامل التي تهتم بها الشركات التي تملك برامج تعمل على مدار الساعة، مثل: أوبر.
-
تحسين التكاليف (Optimize Costs):
تساعد قابلية التوسع في تحسين تكاليف الموارد المستخدمة من خوادم، وسعات تخزين، وأجهزة من خلال التوسعة حسب الطلب، فهذا يساعد في التقليل من الإفراط في استخدام الموارد بدون الحاجة إليها، مؤديا إلى زيادة التكاليف، كما لابد من اعتبار الميزانية الخاصة بالعميل.
-
دعم الإبداع (Support Innovation):
تساهم في تحسين إبداع المطورين والمصممين من خلال توفير القدرة على إضافة مميزات وخدمات جديدة في النظام بدون قيود أو حدود معينة، باستثناء قيود متطلبات العميل، ويساعد هذا الشركة في الثبات والتأقلم على مستجدات السوق المستمرة وتحسين جودة خدماتها للمنافسة بقوة.
التوسعة الرأسية Vertical Scaling
من أنواع قابلية التوسع، وتعرف أيضا بعملية الزيادة، وتشير إلى عملية زيادة قدرات الأجهزة المادية للنظام، مثل:
الخوادم، وسعات التخزين، والبنية التحتية، أو زيادة قدرات البرمجيات عن طريق إضافة خدمات أخرى تتطلب عمليات
معالجة أكبر وبالتالي زيادة في عدد الموارد المستخدمة.
يمكن تحقيق التوسعة الرأسية من خلال تحسين الأجهزة وإضافة معالجات (Processors) قوية لتحمل المتطلبات
العالية، وزيادة عدد المستخدمين، أو تحسين ذاكرة الوصول العشوائية (RAM) وزيادة حجمها، أو عمليات أخرى تساهم
في زيادة الطاقة.
تهدف التوسعة الرأسية لتحسين القابلية للتوسعة والأداء وقدرة النظام على معالجة الأحمال الزائدة، والمهام الصعبة
في معالجة البيانات الضخمة، ولابد من تحقيق ذلك بدون تغيير في أساسات ومعمارية النظام، وبدون إضافة خوادم أخرى
إلا للضرورة.
مثال عملي
- المشكلة: لديك موقع يعمل على خادم ما، وهذا الخادم لديه معالج بمقدار 4 Cores وذاكرة وصول عشوائية
بمقدار 8GB، فماذا تفعل في حالة زيادة عدد المستخدمين للموقع، وعدم قدرة الخاردم في تحمل الطلبات الهائلة.
- الحل: مع زيادة الأحمال في الموقع، وزيادة عمليات معالجة البيانات، يمكن ملاحظة أن الخادم لا يمكنه
معالجة الأحمال الزائدة، لذا عليك زيادة الموارد المستخدمة في الخادم عن طريق رفع كفاءة المعالج إلى 8 Cores ورفع كفاءة ذاكرة الوصول العشوائية إلى 16GB.
مميزات التوسعة الرأسية
- تحسين قدرات الأجهزة عن طريق رفع كفاءة مكونات الخادم وتحسين أداؤه، وتحسين القدرة على معالجة الطلبات المستمرة.
- سهولة إدارة نقاط الأحمال (Nodes) عن طريق إدارة نقطة واحدة بدلا من إدارة عدة نقاط، وتشير النقطة إلى وحدة المعالجة الفردية، حيث تحتوي كل نقطة على ذاكرة الوصول العشوائية والمعالج الخاص بها، وفي حالة التوسعة الرأسية لا توجد عدة وحدات معالجة، ولكن وحدة معالجة واحدة ويتم زيادة مواردها.
عيوب التوسعة الرأسية
- التوسعة الرأسية محدودة بسبب القيود المادية للأجهزة، على عكس التوسعة الأفقية التي يمكنها التوسعة
بإضافة عدة نقاط أخرى.
- زيادة التكاليف بسبب رفع قدرات الخادم والتي قد تكون غالية بعض الشئ على عكس إضافة نقاط أخرى بنفس الكفاءة.
- زيادة إمكانية فشل النظام بسبب تجمع الطلبات على نقطة واحدة أو خادم واحد، وعدم وجود خوادم أخرى تساعد في معالجة الطلبات في حالة فقدان أحد الخوادم.
التوسعة الأفقية Horizontal Scaling
من أنواع قابلية التوسع، وتعرف أيضا بعملية التوسعة، وتشير إلى عملية رفع كفاءة النظام من خلال إضافة عدة خوادم
وتزيع الأحمال والطلبات على عدد كبير من الوحدات الفردية والتي تسمى نقاط (Nodes)، وتحتوي كل نقطة على
الموارد الخاصة بها من معالج وذاكرة وصول عشوائية وسعة تخزين وموارد أخرى.
هذا النهج من القابلية للتوسعة والأداء لا يوجد حاجة لتغيير قدرات الخادم أو استبداله بخادم آخر، حيث يتم إضافة خوادم أخرى بجانب الخادم الأصلي وتوزيع الأحمال على الخوادم مجتمعة، كما على غرار التوسعة الرأسية، فلا يوجد أوقات
توقف للخادم طالما توجد عدة نقاط أخرى يمكنها معالجة الطلبات.
مثال عملي للتوسعة الأفقية
- المشكلة: تخيل أنك تملك شركة توصيل صغيرة، والتي تقوم بتوصيل الطلبات باستخدام شاحنة واحدة فقط،
ومع زيادة الأعمال، أصبحت تستلم عددا كبيرا من طلبات التوصيل إلى أماكن بعيدة، وعلى الرغم من ذلك استطعت تدارك الأمر أنه لا يمكن للشاحنة الواحدة معالجة كل تلك الطلبات بشكل جيد.
- الحل: ولعلاج تلك المشكلة، قررت توسيع نطاق عملية التسليم بشكل أفقي عن طريق إضافة عدة شاحنات أخرى، فبدلا من الاعتماد على شاحتة واحدة فقط، قمت بشراء عدة شاحنات وتوظيف عدد من السائقين لقبول أكبر عدد من طلبات التوصيل، وبالتالي قمت بتوزيع العمل على عدة شاحنات، والوصول إلى عددة أكبر من الجمهور.
مميزات التوسعة الأفقية
- من أفضل أنواع القابلية للتوسعة والأداء، حيث تساعد في زيادة سعة النظام من خلال إضافة عدة نقاط أخرى لاستقبال الطلبات.
- تحسين الأداء من خلال توزيع العمليات والتشغيل على عدة نقاط، وتقليل احتمالية فشل أحد الخوادم.
- زيادة التسامح مع الأخطاء، ففي حالة فشل نقطة معينة أو خادم معين، يمكن إعادة توجيه الطلبات إلى نقطة أخرى أو خادم آخر.
عيوب التوسعة الرأسية
- إدارة عدة نقاط أو خوادم قد يكون معقدا بعض الشئ، على عكس إدارة نقطة واحدة.
- زيادة التكاليف ولكن بشكل أقل من التوسعة الرأسية.
القابلية للتوسعة والأداء من العوامل المهمة في تصميم الأنظمة، لذا على مصممي البرمجيات إتخاذ قرارات مناسبة لنوع العمل، والمساهمة في تحسين أداء النظام لقبول أكبر عدد من المستخدمين.