مقدمه
کسبوکارهای امروزی به شدت به برنامهها وابستهاند و نحوه میزبانی آنها تأثیر مستقیمی بر هزینه، عملکرد و پایداری دارد. طی دو دهه گذشته، صنعت فناوری از سرورهای فیزیکی اختصاصی به سمت ماشینهای مجازی و سپس کانتینرها حرکت کرده است.
این تغییر یکشبه اتفاق نیفتاد، بلکه نتیجه محدودیتهای واقعی فناوریهای قدیمیتر و جستجوی مداوم برای روشهایی کارآمدتر بود.
دوران سرورهای اختصاصی
در گذشته، هر برنامه معمولاً به یک سرور اختصاصی جداگانه نیاز داشت. از آنجا که پیشبینی دقیق نیازهای عملکردی یک برنامه جدید دشوار بود، شرکتها اغلب مجبور به خرید سرورهایی قویتر و گرانتر از حد نیاز میشدند.
نتیجه این رویکرد، زیرساختی بود که بسیار پایینتر از ظرفیت واقعی خود کار میکرد و منابع مالی و محیطزیستی زیادی هدر میرفت.
ظهور ماشینهای مجازی
معرفی ماشینهای مجازی (VM) این وضعیت را تغییر داد. VM ها امکان اجرای ایمن چند برنامه روی یک سرور فیزیکی واحد را فراهم کردند و به شرکتها اجازه دادند از سختافزار موجود بهتر استفاده کنند.
این نوآوری مدلی کارآمدتر برای زیرساخت ایجاد کرد و برای سالها به استاندارد صنعت تبدیل شد.
محدودیتهای ماشینهای مجازی
با وجود مزایای خود، VM ها دارای معایب قابلتوجهی هستند:
- هر VM به یک
سیستمعامل (OS)کامل و مستقل نیاز دارد که CPU و RAM مصرف میکند - هر VM و سیستمعامل آن باید جداگانه patch و نگهداری شود
- هر VM نیاز به مانیتورینگ مستقل دارد
- VM ها نسبتاً دیر بالا میآیند و قابلیت جابجایی کمتری دارند
ورود کانتینرها
شرکتهای بزرگ فناوری در نهایت از VM ها فراتر رفتند و به سمت مدلی سبکتر یعنی کانتینرها حرکت کردند. برخلاف VM ها، کانتینرها kernel سیستمعامل میزبان را به اشتراک میگذارند، نه اینکه برای هر نمونه یک سیستمعامل کامل اجرا کنند.
این طراحی باعث میشود یک میزبان بتواند تعداد کانتینر بسیار بیشتری نسبت به VM اجرا کند.
مثال: یک هاست فیزیکی یکسان
- تعداد ماشین مجازی قابل اجرا: ۱۰
- تعداد کانتینر قابل اجرا: ۵۰کانتینرها همچنین سریعتر راهاندازی میشوند و جابجایی آنها بین محیطهای مختلف نسبت به ماشینهای مجازی سادهتر است.
فناوری پشت کانتینرها
فناوری مدرن کانتینر از دنیای لینوکس آغاز شد و بر پایه ویژگیهای سطح kernel مانند namespaces، control groups (cgroups) و capabilities بنا شده است. این اجزا امکان ایزولهسازی کارآمد فرآیندها را بدون سربار یک سیستمعامل کامل برای هر نمونه فراهم کردند.
با این حال، کار مستقیم با این ابزارهای سطح پایین پیچیده بود و همین موضوع پذیرش گسترده را محدود میکرد، تا زمانی که راهحلی سادهتر پدیدار شد.
نقش داکر
ورود داکر (Docker) کانتینرها را برای توسعهدهندگان عادی عملی و قابلدسترس کرد. داکر بخش زیادی از پیچیدگی زیرساختی فناوری کانتینر در لینوکس را پنهان کرد و آنچه را که زمانی فقط در اختیار متخصصان بود، به ابزاری همهگیر تبدیل کرد.
امروزه کانتینرها همچنین میتوانند روی سیستمهای ویندوز و مک نیز اجرا شوند، معمولاً از طریق لایههای سازگاری مانند WSL 2 در ویندوز یا یک VM سبک لینوکسی در مک.
کانتینرها و ارکستریشن
با افزایش استفاده از کانتینرها، مدیریت تعداد زیادی از آنها به چالشی جدی تبدیل شد که این موضوع منجر به ظهور Kubernetes بهعنوان استاندارد صنعتی برای ارکستریشن برنامههای کانتینری در مقیاس بزرگ شد.
نتیجهگیری
مسیر حرکت از سرورهای اختصاصی به ماشینهای مجازی و سپس کانتینرها، بازتابدهنده تلاشی مداوم برای رسیدن به زیرساختی کارآمدتر، قابلحملتر و مقیاسپذیرتر است. کانتینرها که عمدتاً به لطف سادگی داکر همهگیر شدند، اکنون ستون فقرات توسعه برنامههای ابری مدرن را تشکیل میدهند.