إذا كنت قد بدأت مؤخرًا فقط في التعرف على أدوات المحاكاة الافتراضية، فقد تتساءل عن الاختلافات في المحادثة التقنية حول الحاويات مقابل الأجهزة الافتراضية (VMs).
أصبحت الحاويات قوة مهيمنة في تطوير السحابة الأصلية، لذلك من المهم فهم ماهي عليه وما ليست عليه. على الرغم من أن الحاويات والأجهزة الافتراضية لكل منها خصائص متميزة وفريدة، إلا أنها متشابهة من حيث أن كلاهما يحسن كفاءة تكنولوجيا المعلومات ويوفر إمكانية نقل التطبيقات ويعزز عمليات التطوير ودورة حياة تطوير البرمجيات.
المحاكاة الافتراضية هي عملية تُستخدم فيها البرمجيات لإنشاء طبقة تجريدية فوق أجهزة الكمبيوتر تسمح بتقسيم عناصر الأجهزة في جهاز كمبيوتر واحد إلى عدة أجهزة كمبيوتر افتراضية.
يُطلق على البرنامج المستخدم اسم مراقب الأجهزة الافتراضية (Hypervisor)، وهو عبارة عن طبقة صغيرة تمكّن أنظمة تشغيل متعددة من العمل جنباً إلى جنب مع بعضها البعض، ومشاركة نفس موارد الحوسبة المادية. عند استخدام مراقب الأجهزة الافتراضية على جهاز كمبيوتر أو خادم فعلي (يعرف أيضا باسم Bare Metal Server) في مركز البيانات، فإنه يسمح للكمبيوتر الفعلي بفصل نظام التشغيل والتطبيق عن أجهزته. بعد ذلك، يمكنها تقسيم نفسها إلى عدة "أجهزة افتراضية" مستقلة.
شاهد الفيديو لإلقاء نظرة عن كثب على تقنية المحاكاة الافتراضية:
الأجهزة الافتراضية (VMs) هي التقنية المستخدمة لبناء بيئات الحوسبة الافتراضية. وهي موجودة منذ فترة طويلة وتعتبر أساس الجيل الأول من الحوسبة السحابية.
ببساطة، الجهاز الافتراضي هو محاكاة لجهاز كمبيوتر فعلي. تُمكِّن الأجهزة الافتراضية الفرق من تشغيل ما يبدو أنه أجهزة متعددة، بأنظمة تشغيل متعددة، على جهاز كمبيوتر واحد. تتفاعل الأجهزة الافتراضية مع أجهزة الكمبيوتر الفعلية باستخدام طبقات برمجية خفيفة تسمى مراقب الأجهزة الافتراضية (Hypervisor). يمكن لمراقب الأجهزة الافتراضية (Hypervisor) فصل الأجهزة الافتراضية عن بعضها البعض وتخصيص المعالجات والذاكرة والتخزين فيما بينها.
تُعرف الأجهزة الافتراضية أيضاً بالخوادم الافتراضية ومثيلات الخوادم الافتراضية والخوادم الافتراضية الخاصة.
تعد الحاويات طريقة أخف وزناً وأكثر مرونة للتعامل مع المحاكاة الافتراضية - نظراً لأنها لا تستخدم برنامج مراقبة الأجهزة الافتراضية، يمكنك الاستمتاع بتوفير الموارد بشكل أسرع وتوفر أسرع للتطبيقات الجديدة.
بدلا من تشغيل جهاز افتراضي بأكمله، تقوم خدمة النقل بالحاويات بتجميع كل ما يلزم لتشغيل التطبيق أو الخدمة المصغرة (جنباً إلى جنب مع مكتبات وقت التشغيل التي يحتاجون إلى تشغيلها). تتضمن الحاوية جميع التعليمات البرمجية وتبعياتها وحتى نظام التشغيل نفسه. يتيح ذلك تشغيل التطبيقات في أي مكان تقريباً - كمبيوتر سطح المكتب أو بنية أساسية تقليدية لتكنولوجيا المعلومات أو السحابة.
تستخدم الحاويات شكلاً من أشكال المحاكاة الافتراضية لنظام التشغيل (OS). فهي ببساطة تستفيد من ميزات نظام التشغيل المضيف لعزل العمليات والتحكم في وصول العمليات إلى وحدات المعالجة المركزية والذاكرة والمساحة المكتبية.
لقد كانت الحاويات موجودة منذ عقود من الزمن. ومع ذلك ، فإن الإجماع المشترك هو أن عصر الحاوية الحديث بدأ في عام 2013 مع إدخال Docker، وهو نظام أساسي مفتوح المصدر لبناء ونشر وإدارة التطبيقات المعبأة في حاويات. تعرف على المزيد حول Docker، وحاويات Docker وDockerfiles (ملف إنشاء صورة الحاوية) وكيف تطور النظام البنائي باستخدام تقنية الحاوية على مدار العقد الماضي.
في المحاكاة الافتراضية التقليدية، يقوم برنامج المحاكاة الافتراضية بتحويل الأجهزة المادية إلى أجهزة افتراضية. والنتيجة هي أن كل جهاز افتراضي يحتوي على نظام تشغيل ضيف ونسخة افتراضية من الأجهزة التي يتطلبها نظام التشغيل لتشغيلها والتطبيق والمكتبات والتبعيات المرتبطة به. يمكن تشغيل الأجهزة الافتراضية ذات أنظمة التشغيل المختلفة على نفس الخادم الفعلي. على سبيل المثال، يمكن تشغيل جهاز افتراضي VMware بجوار Linux، والذي يعمل بجوار جهاز افتراضي Microsoft، إلخ.
بدلا من محاكاة الأجهزة الأساسية، تقوم الحاويات بمحاكاة نظام التشغيل (عادة Linux أو Windows) بحيث تحتوي كل حاوية فردية فقط على التطبيق ومكتباته وتبعياته. الحاويات صغيرة وسريعة وقابلة للنقل لأن الحاويات، على عكس الأجهزة الافتراضية، لا تحتاج إلى تضمين نظام تشغيل ضيف في كل حالة، بل يمكنها ببساطة الاستفادة من الميزات والموارد من نظام التشغيل المضيف.
تماماً كالأجهزة الافتراضية، تسمح الحاويات للمطورين بتحسين استخدام وحدة المعالجة المركزية والذاكرة للأجهزة الفعلية. ومع ذلك، تذهب الحاويات إلى أبعد من ذلك لأنها تتيح أيضاً بنية الخدمات المصغرة ، حيث يمكن نشر عناصر التطبيق وتوسيع نطاقها بشكل أكثر دقة. يعد هذا بديلاً جذاباً للاضطرار إلى توسيع نطاق تطبيق متآلف بالكامل لأن عنصراً واحداً يعاني من الحمل الزائد.
انضم إلى Nigel Brown وهو يلقي نظرة فاحصة على أوجه الاختلاف بين الحاويات والأجهزة الافتراضية:
على الرغم من أنه لا يزال هناك العديد من الأسباب لاستخدام الأجهزة الافتراضية، إلا أن الحاويات توفر مستوى من المرونة وقابلية النقل مثاليًا لعالم السحابة المتعددة. عندما يقوم المطورون بإنشاء التطبيقات الجديدة، فقد لا يعرفون جميع الأماكن التي سيحتاجون إلى نشر التطبيقات بها.
اليوم، قد تقوم المؤسسات بتشغيل التطبيق على سحابة خاصة، ولكن غدًا، قد تحتاج إلى نشره على سحابة عامة من مزود خدمة مختلف. توفر التطبيقات المعبأة في حاويات للفرق المرونة التي يحتاجونها للتعامل مع العديد من بيئات البرامج لتكنولوجيا المعلومات الحديثة.
تعد الحاويات أيضاً مثالية للأتمتة وعمليات التطوير، بما في ذلك تنفيذ التكامل المستمر والنشر المستمر (CI/CD).
على الرغم من الفوائد الكثيرة للحاويات وحالات الاستخدام العديدة حيث تكون هي الخيار الأفضل، إلا أنها تأتي مع بعض التحديات الخاصة بها.
يمكن أن تتضمن تطبيقات المؤسسات الكبيرة عدداً هائلا من الحاويات، وتمثل إدارة الحاويات بعض المشكلات الخطيرة للفرق. كيف يمكنك الحصول على رؤية واضحة لما يتم تشغيله وأين يتم تشغيله؟ كيف تتعامل مع المشكلات المهمة مثل الأمن والامتثال؟ كيف تدير تطبيقاتك باستمرار؟
تتجه معظم الشركات إلى حلول مفتوحة المصدر مثل Kubernetes، وتقوم Kubernetes بالفعل بتشغيل حاويات في معظم المواقف لعدد من المؤسسات.