الـ "Containerization" أو "الحاويات"، وأشهر أدواته هما الـ Docker والـ Kubernetes. تعال نفهم الموضوع ببساطة...
📍 يعني إيه Containerization؟
أول حاجة، كلنا عارفين إن أي تطبيق بيحتاج يبقى ليه البيئة اللي هيشتغل فيها (Operating System، Libraries، Dependencies، Configurations) وغيرها من الحاجات اللي بتهيئ الظروف للتطبيق إنه يشتغل من غير مشاكل.
لكن المشكلة إنه لما تيجي تنقل التطبيق ده من جهاز لجهاز تاني، أو حتى من بيئة التطوير (Development) لبيئة الإنتاج (Production)، ممكن تواجه مشاكل بسبب اختلاف البيئة أو النسخ اللي مثبتة على الأجهزة. هنا بتيجي فكرة الحاويات!
الـ Containerization ببساطة إنك بتحط التطبيق بتاعك بكل الحاجات اللي محتاجها في "حاوية" أو "Container" واحدة، بحيث تقدر تنقلها وتشغلها في أي مكان من غير ما تقلق من اختلاف البيئة.
📌 الأداة الأشهر في عالم الـ Containerization
الـ Docker يعتبر من أشهر الأدوات في عالم الـ Containerization. طب هو بيعمل إيه؟
ببساطة بيسمحلك إنك تعمل "حاويات" أو "Containers" للتطبيقات بتاعتك. يعني التطبيق بتاعك وكل الحاجات اللي محتاجها (dependencies) هتكون في حاوية معزولة عن باقي النظام.
فلو شغلت الحاوية دي على سيرفر تاني أو حتى على جهاز تاني، هتشتغل بنفس الشكل من غير مشاكل، كأنك واخد صورة (Snapshot) لكل اللي محتاجه التطبيق بتاعك علشان يشتغل.
ومن مميزات Docker إنه خفيف جدًا مقارنة بالـ Virtual Machines (الأجهزة الوهمية) لأن الحاويات بتشارك نفس الـ Operating System مع السيرفر، فمش محتاجة لكل الموارد اللي بيحتاجها نظام تشغيل كامل.
📌 طيب إيه دور الـ Kubernetes في الموضوع؟
بعد ما الحاويات (Containers) بدأت تنتشر بشكل كبير، الشركات الكبيرة بدأت تواجه مشكلة تانية: زي إدارة الحاويات دي كلها!
لو عندك مثلاً 100 أو 1000 حاوية لتطبيقات مختلفة، إزاي هتقدر تديرهم؟ هنا بييجي دور الـ Kubernetes، اللي هو إدارة وتنسيق الحاويات.
📍 الـ Kubernetes بيعمل حاجات كتير زي:
توزيع الحاويات على السيرفرات المختلفة بطريقة تلقائية حسب الحاجة.
الـ Auto-scaling: لو التطبيق محتاج موارد زيادة، Kubernetes يقدر يشغل حاويات جديدة أو يزود موارد الحاويات الموجودة.
الـ Self-healing: يعني لو حاوية وقعت أو حصل فيها مشكلة، Kubernetes يقدر يشغل واحدة جديدة مكانها بدون أي تدخل منك.
الـ Rolling updates: لو عايز تعمل تحديث لتطبيقك، Kubernetes يقدر يعمل ده بدون ما يوقف التطبيق أو يؤثر على المستخدمين.
📌 ليه الشركات بتستخدم Docker و Kubernetes؟
الفكرة إن Docker وKubernetes بيوفروا حل لإدارة التطبيقات بشكل سلس ومرن، وكمان بيقللوا من المشاكل اللي ممكن تحصل بسبب اختلاف البيئات، وده بيوفر وقت ومجهود كبير لفريق التطوير والدعم.
ده غير إنه بيساعد على التوسع السريع وتحسين أداء التطبيقات، لأنه بقى عندك أداة بتدير كل حاجة بدل ما تضطر تعملها يدوي.
بالتوفيق يا بطل 🤍