مفاهیم پیش‌نیاز

ماشین مجازی (Virtual Machine)

ماشین مجازی (VM) یک محیط محاسباتی ایزوله‌شده است که به‌صورت نرم‌افزاری، عملکرد یک سیستم فیزیکی را شبیه‌سازی می‌کند. هر VM دارای سیستم‌عامل، نرم‌افزارها و تنظیمات مستقل خود است، اما همگی منابع سخت‌افزاری (مانند CPU، حافظه، و ذخیره‌سازی) را با سایر VMها بر روی یک سرور فیزیکی به اشتراک می‌گذارند.
این ایزولاسیون امکان اجرای چندین ماشین مجازی روی یک میزبان را بدون تداخل فراهم می‌کند. ماشین‌های مجازی معمولاً در موارد زیر کاربرد دارند:

  • استفاده بهینه از منابع سخت‌افزاری
  • اجرای برنامه‌ها در سیستم‌عامل‌های مختلف
  • آزمایش نرم‌افزار در محیط‌های کنترل‌شده
  • افزایش انعطاف‌پذیری و مقیاس‌پذیری زیرساخت

تفاوت ماشین مجازی (VM) و سایر راهکارهای میزبانی (Hosting Solutions)

ویژگیماشین مجازی (VM)راهکار میزبانی (Hosting)
تعریفیک محیط مجازی‌سازی‌شده که روی سرور فیزیکی با استفاده از hypervisor اجرا می‌شود.یک سرویس ارائه‌شده توسط شرکت‌های هاستینگ برای میزبانی وب‌سایت، برنامه یا داده‌ها، معمولاً شامل مدیریت، پشتیبانی و منابع از پیش تنظیم‌شده
نوع فناوریلایهٔ زیرساختی (IaaS)لایهٔ خدماتی (SaaS یا PaaS یا ترکیبی)
سطح کنترلکنترل کامل بر سیستم‌عامل، تنظیمات شبکه، نصب نرم‌افزارکنترل محدود؛ بسته به نوع هاست (اشتراکی، VPS، اختصاصی، مدیریت‌شده)
مخاطب هدفتوسعه‌دهندگان، DevOps، مدیران زیرساختکاربران نهایی، وب‌مسترها، صاحبان کسب‌وکارهای کوچک تا متوسط
موارد استفادهاجرای ماشین‌های سفارشی، محیط‌های تست، شبیه‌سازی، مقیاس‌پذیری زیرساختمیزبانی وب‌سایت، فروشگاه آنلاین، وب‌اپلیکیشن، ایمیل سازمانی
پیکربندی و مدیریتنیازمند تخصص فنی برای راه‌اندازی و نگهداریمعمولاً پیکربندی‌شده و آماده استفاده
میزبانی چیست؟ممکن است خودش بخشی از راهکار میزبانی باشد (مثلاً در VPS Hosting)می‌تواند شامل استفاده از VM باشد اما خود میزبانی سطح بالاتری است (مثلاً Shared Hosting روی یک VM)
مثال‌هاKVM VM، VMware، VirtualBox، Hyper-VShared Hosting، VPS، Dedicated Hosting، Managed WordPress Hosting، Cloud Hosting, Database Hosting

چه زمانی از هر کدام استفاده کنیم؟

سناریوپیشنهاد
می‌خواهید یک سایت وردپرس ساده راه‌اندازی کنیدShared Hosting یا Managed Hosting
به کنترل کامل روی سیستم نیاز دارید (OS، پورت، نرم‌افزار)VM یا VPS
نیاز به مقیاس‌پذیری بالا و زیرساخت منعطف داریدVM در محیط Cloud (مثل زیرساخت کوبیت AWS EC2، Azure VM)
دنبال راه‌حل بدون نیاز به دانش فنی هستیدHosting Solution با پنل آماده مثل CPanel، پلتفرم کوبیت، ابرافزار کوبیت

تفاوت بین VM و Container

ویژگیVM (ماشین مجازی)Container (کانتینر)
ساختار معماریVM سیستم‌عامل خودش را دارد. هر VM شامل یک OS کامل، نرم‌افزارها و درایورهاست.کانتینرها از هسته سیستم‌عامل میزبان (Host OS) استفاده می‌کنند و فقط اپلیکیشن و وابستگی‌های آن را دارند.
اندازه (Size)سنگین‌تر؛ معمولاً چندین گیگابایتبسیار سبک؛ معمولاً چند مگابایت
زمان راه‌اندازی (Boot Time)چندین ثانیه تا دقیقهمعمولاً زیر یک ثانیه
ایزولاسیونکامل؛ مثل یک کامپیوتر مستقلسبک‌تر؛ از طریق فضای نام (namespaces) و کنترل منابع (cgroups) در کرنل لینوکس
کاربردمناسب برای اجرای چند سیستم‌عامل متفاوت یا بارهای سنگین و طولانی‌مدتمناسب برای اجرای سریع، مقیاس‌پذیر و ماژولار اپلیکیشن‌ها، به‌ویژه در معماری microservices
مقیاس‌پذیریکمتر چابک؛ نیازمند منابع زیاد و زمان بالا برای ایجاد و گسترشبسیار چابک؛ مقیاس‌پذیری خودکار با ابزارهایی مثل Kubernetes
وابستگی به سیستم‌عامل میزبانمی‌تواند هر سیستم‌عاملی باشد (مثلاً ویندوز روی لینوکس)معمولاً باید با سیستم‌عامل میزبان سازگار باشد (مثلاً کانتینر لینوکس روی میزبان لینوکس)
مثال‌هاKVM، VMware، Hyper-V، VirtualBoxDocker، containerd، Podman

چه زمانی از هر کدام استفاده کنیم؟

سناریوپیشنهاد
اجرای اپلیکیشن‌هایی با نیازمندی‌های خاص به سیستم‌عامل یا کرنل متفاوتVM
ایجاد محیط تست کاملاً ایزوله با امنیت بالاVM
اجرای سریع، سبک، و قابل مقیاس اپلیکیشن‌های سرویس‌محورContainer
پیاده‌سازی معماری Microservices و DevOps CI/CDContainer

کلید SSH (SSH Key)

کلید SSH یک مکانیزم احراز هویت رمزنگاری‌شده برای اتصال امن به ماشین‌های مجازی (لینوکسی) است. این کلید شامل یک جفت کلید عمومی و خصوصی است:

  • کلید عمومی (Public Key): در ماشین مجازی ذخیره می‌شود.
  • کلید خصوصی (Private Key): نزد کاربر باقی می‌ماند و نباید فاش شود.

با استفاده از کلید SSH، کاربران می‌توانند بدون نیاز به رمز عبور، به صورت امن وارد ماشین‌های مجازی شوند. این روش امنیت دسترسی را افزایش داده و خطرات ناشی از استفاده از گذرواژه‌های ضعیف را حذف می‌کند.


زیرشبکه (Subnet)

زیرشبکه (Subnet) یک تقسیم‌بندی منطقی از IP داخلی یک شبکه ابر خصوصی مجازی (VPC) است. هر Subnet دارای محدوده IP مشخصی است به‌منظور:

  • تفکیک منابع (مثلاً پایگاه داده از سرورهای وب)
  • کنترل دقیق‌تر ترافیک و امنیت
  • ساده‌سازی مدیریت شبکه

به کار می‌رود. تقسیم VPC به زیرشبکه‌ها به ساختارمند کردن معماری ابری کمک کرده و امکان اعمال سیاست‌های امنیتی متفاوت بر بخش‌های مختلف شبکه را فراهم می‌سازد.


آدرس IP شناور (Floating IP)

آدرس IP شناور یک آدرس IPv4 عمومی است که می‌تواند به‌صورت پویا به هر ماشین مجازی در یک منطقه جغرافیایی خاص اختصاص یابد. ویژگی‌های کلیدی این نوع آدرس:

  • قابل جابه‌جایی میان سرورها بدون نیاز به راه‌اندازی مجدد
  • مناسب برای سناریوهای High Availability و Failover
  • هدایت آسان ترافیک به سرور فعال در زمان واقعی

استفاده از IP شناور، دسترسی پیوسته به سرویس‌ها را حتی در صورت جابه‌جایی بین ماشین‌ها تضمین می‌کند.


بکاپ (Backup)

بکاپ یک فرآیند برنامه‌ریزی‌شده و مداوم برای نگهداری نسخه‌های پشتیبان از داده‌ها یا ماشین‌های مجازی است. در سیستم کوبیت، بکاپ‌ها از طریق قوانین بکاپ‌گیری (BackUp Rules) به‌صورت دوره‌ای (روزانه، هفتگی یا ماهانه) انجام می‌شوند. هر رول مشخص می‌کند:

  • از کدام ماشین مجازی بکاپ گرفته شود
  • در چه بازه زمانی (Frequency)
  • چه تعداد نسخه‌ی پشتیبان (Slot) نگه‌داری شود

بکاپ‌ها برای محافظت بلندمدت از داده‌ها، بازگردانی در مواقع بحرانی و مهاجرت بین محیط‌ها استفاده می‌شوند. آن‌ها معمولاً در یک فضای ذخیره‌سازی جداگانه و پایدار نگهداری می‌شوند.

اسنپ‌شات (Snapshot)

اسنپ‌شات یک کپی لحظه‌ای (Point-in-Time) از وضعیت یک ماشین مجازی یا دیسک در یک زمان خاص است. این کپی شامل سیستم‌عامل، داده‌ها، تنظیمات و ساختار فایل‌ها است. اسنپ‌شات‌ها کاربردهایی مانند موارد زیر دارند:

  • بازگردانی سریع به وضعیت قبل از تغییر یا خطا
  • آزمایش یا اجرای تغییرات بدون ریسک دائمی
  • ایجاد کلون برای توسعه یا تست

اسنپ‌شات‌ها معمولاً برای پشتیبان‌گیری کوتاه‌مدت و درون‌سیستمی مناسب‌اند و به‌طور مستقیم به حجم اصلی متصل‌اند، نه به فضای ذخیره‌سازی مجزا.

تفاوت بکاپ و اسنپ‌شات

ویژگیSnapshotBackup
نوع دادهکپی لحظه‌ای از دیسک یا VMکپی کامل داده‌ها در بازه‌های زمانی مشخص
مکان ذخیره‌سازیمعمولاً در همان محیط ذخیره‌سازیمعمولاً در فضای جداگانه و امن
هدف اصلیبازگشت سریع در صورت تغییرات یا خرابیمحافظت بلندمدت از داده‌ها
مدت نگهداریکوتاه‌مدت (تا قبل از تغییرات بعدی یا حذف دستی)بلندمدت و قابل نگهداری در نسخه‌های متعدد
زمان اجرافوری، در چند ثانیهبرنامه‌ریزی‌شده و بسته به حجم داده زمان‌برتر
قابلیت برنامه‌ریزیمعمولاً دستیبرنامه‌ریزی‌شده به‌صورت روزانه، هفتگی، ماهانه
استقلال از منبعبه منبع متصل است (وابسته به VM اصلی)قابل بازیابی مستقل، حتی پس از حذف VM اصلی
مناسب برایتست، توسعه، تغییر موقتبازیابی پس از حادثه، مهاجرت، بایگانی مطمئن

گروه امنیتی (Security Group)

گروه امنیتی یک فایروال مجازی در سطح ماشین مجازی یا منبع ابری است که کنترل دقیق ترافیک ورودی و خروجی را فراهم می‌سازد. قوانین هر گروه امنیتی می‌توانند مشخص کنند:

  • مجاز بودن یا نبودن پروتکل‌ها (TCP, UDP, ICMP)
  • پورت‌های باز و بسته
  • محدوده‌های IP (از نوع IPv4 یا IPv6) مجاز برای دسترسی

گروه‌های امنیتی امکان اعمال سیاست‌های امنیتی دقیق و انعطاف‌پذیر را فراهم کرده و به‌صورت Stateful عمل می‌کنند؛ یعنی ترافیک برگشتی به‌طور خودکار مجاز خواهد بود، اگر ارتباط ورودی مجاز بوده باشد (ارتباط دو سویه است).

تفاوت بین Security Group، فایروال سیستم‌عامل، و کنترل دسترسی

ویژگیSecurity Groupفایروال سیستم‌عاملکنترل دسترسی (Access Control)
سطح اجراسطح زیرساخت ابری (قبل از رسیدن ترافیک به سیستم‌عامل)سطح سیستم‌عامل مهمان (مثلاً داخل لینوکس یا ویندوز)سطح کاربر، نرم‌افزار یا سرویس
موقعیتمعمولاً در سطح شبکهٔ مجازی/ماشین مجازی در پلتفرم ابری (مثلاً AWS، Azure، OpenStack)درون ماشین مجازی یا سرور فیزیکیدر اپلیکیشن، فایل سیستم، پایگاه داده یا API
وظیفه اصلیفیلتر ترافیک ورودی/خروجی بر اساس پورت، IP و پروتکلکنترل ترافیک شبکه ورودی/خروجی در خود سیستم‌عاملمحدودسازی دسترسی کاربران یا برنامه‌ها به منابع یا عملیات خاص
مثال قوانیناجازه به TCP روی پورت 22 از IP مشخصرد همه پورت‌های غیر از 80/443 با iptablesفقط کاربران admin مجاز به خواندن جدول X در DB
مناسب برایمحدودسازی دسترسی در سطح شبکه و ماشین‌های ابریکنترل دقیق در سطح سیستم‌عاملمدیریت مجوز کاربران، گروه‌ها و نقش‌ها
Statefulnessمعمولاً Stateful (پاسخ‌ها به ارتباط مجاز، مجاز تلقی می‌شوند)اغلب Stateful اما قابل تنظیمStateless (بسته به پیاده‌سازی)
میزان کنترلتنظیم‌شده توسط پلتفرم ابریتنظیم‌شده در خود سیستم‌عاملبخشی از سیاست‌های امنیتی سرویس یا اپلیکیشن

این سه لایه مکمل یکدیگر هستند:

  1. Security Groups
  • نقش اول را در فیلتر کردن ترافیک شبکه بازی می‌کنند.
  • ترافیک قبل از رسیدن به سیستم‌عامل بررسی می‌شود.
  • برای مثال: فقط اجازه دسترسی SSH از IP خاص.
  1. فایروال سیستم‌عامل
  • ترافیکی که از Security Group عبور کرده باشد، اینجا بررسی می‌شود.
  • به‌صورت دقیق‌تر روی پروتکل‌ها، کانکشن‌ها، زمان‌ها و رفتارها کنترل دارید.
  • مثال: با ufw یا iptables فقط به کاربران خاص اجازه اتصال بده.
  1. کنترل دسترسی
  • فرض کنید کاربر با SSH به سیستم وارد شده؛ این لایه مشخص می‌کند به چه چیزی دسترسی دارد.
  • مثلاً:
    • اجازه ندارد یک فایل را ببیند (chmod)
    • اجازه ندارد به دیتابیس متصل شود مگر در نقش خاصی
    • اجازه ندارد یک endpoint API را فراخوانی کند