سرورت را ریاستارت کردهای و پنج دقیقه است که SSH جواب نمیدهد. یا بدتر: دیسک روی ۹۸ درصد قفل شده و iostat -x 1 نشان میدهد %util روی nvme0n1 مدام ۱۰۰ است. حالا باید تصمیم بگیری: همین VPS را بزرگتر کنم، یا کل بار را ببرم روی سرور ابری؟ این تصمیم با یک جدول مقایسهای حل نمیشود، چون تفاوت اصلی این دو در چیزی است که موقع خرابی و موقع رشد میفهمی.
تفاوت از کجا شروع میشود: لایهٔ ذخیرهسازی
در VPS کلاسیک، دیسک تو یک volume محلی روی همان هایپروایزر است. اگر آن ماشین فیزیکی بمیرد، دادهات هم با آن میرود؛ مگر اینکه بکاپ بیرونی داشته باشی. در سرور ابری، دیسک معمولاً یک volume شبکهای است که روی چند نود توزیع شده و با replication همزمان نگه داشته میشود. این تفاوت را در عمل با یک عدد میفهمی: IOPS.
یک volume محلی NVMe روی سرور اختصاصی بهراحتی ۵۰۰ هزار IOPS تصادفی 4K میدهد. همان حجم روی storage شبکهای ابری، بسته به نوع volume، معمولاً بین ۳ هزار تا ۲۰ هزار IOPS پایه است و برای بالاتر رفتن باید provisioned IOPS بخری. اگر بار تو یک دیتابیس MySQL با write سنگین است، این عدد همهچیز را تعیین میکند، نه تعداد vCPU.
fio --name=randwrite --ioengine=libaio --rw=randwrite \
--bs=4k --numjobs=4 --size=2G --runtime=60 --group_reporting
این را قبل از مهاجرت روی هر دو طرف بزن. اگر اختلاف IOPS بیشتر از دو برابر بود و بار تو I/O-bound است، مهاجرت به ابر بدون انتخاب درست نوع volume فقط دردسر را جابهجا میکند.
مهاجرت زنده: چیزی که VPS ندارد
مهاجرت زنده (live migration) یعنی هایپروایزر حافظهٔ رم ماشین را در حالی که سرویس بالاست به نود دیگر کپی میکند و در لحظهٔ آخر، کمتر از چند صد میلیثانیه توقف اعمال میشود. در یک سرور ابری واقعی، وقتی نود فیزیکی نیاز به تعمیر دارد، این کار پشت صحنه انجام میشود و تو فقط یک جهش کوچک در گراف latency میبینی.
در VPS این اتفاق نمیافتد. تعمیر نود یعنی downtime برنامهریزیشده، یا بدتر، یعنی ماشین روی نود دیگری restore میشود و IP عوض میشود. اگر SLA داخلی تیمت زیر پنج دقیقه downtime در ماه است، این یک تفاوت تعیینکننده است.
اما یک هزینهٔ پنهان دارد: مهاجرت زنده به شبکهٔ پرسرعت بین نودها وابسته است. اگر بار تو حافظهٔ زیادی دارد (مثلاً یک Redis با ۶۴ گیگابایت dataset)، هر مهاجرت چند دقیقه طول میکشد و در آن بازه، latency نوشتن بالا میرود. من روی کلاسترهایی با رم بالا دیدهام که مهاجرت زنده خودش باعث تریگر شدن alert شده است.
مدل صورتحساب: کجا هزینه از دستت در میرود
VPS معمولاً قیمت ثابت ماهانه دارد. سرور ابری معمولاً بر اساس ساعت مصرف صورتحساب میشود، و همینجاست که بیشترین سوءتفاهم پیش میآید.
| مؤلفه | VPS | سرور ابری |
|---|---|---|
| محاسبه | ثابت ماهانه | ساعتی، بر اساس vCPU و RAM رزروشده |
| ذخیرهسازی | شامل پلن | جدا، بر اساس GB و نوع volume |
| ترافیک خروجی | معمولاً سهمیهٔ مشخص | بر اساس GB خروجی، جدا حساب میشود |
| IP عمومی | شامل | ممکن است جدا حساب شود |
اینجا اشتباه میکنند: تیمها یک instance ابری میسازند، فراموش میکنند خاموشش کنند، و آخر ماه صورتحساب چند برابر انتظار میبینند. علامتش هم این است که در پنل، هزینهٔ محاسبه پایین است ولی هزینهٔ ذخیرهسازی و ترافیک سر به فلک کشیده. volume هایی که instance به آنها وصل نبوده هم پول میخورند.
راهحل عملی: از اول تگگذاری کن و بودجهٔ هشدار بگذار. اگر تیمت چند نفر است، بدون IaC و تگ، کنترل هزینه غیرممکن میشود. زیرساخت به عنوان کد را از همان روز اول جدی بگیر، نه بعد از اولین صورتحساب غافلگیرکننده.
کدام برای چه باری بهتر است
موضع من روشن است: اگر بار تو پایدار، تکسروری، و I/O-bound است (یک وردپرس پربازدید، یک دیتابیس متوسط، یک سرویس داخلی)، VPS یا سرور اختصاصی انتخاب درستتری است. پول کمتری میدهی و IOPS بیشتری میگیری. مهاجرت به ابر اینجا فقط پیچیدگی اضافه میکند.
ابر را وقتی انتخاب کن که حداقل یکی از اینها درست باشد:
- بار تو نوسان شدید دارد و میخواهی ساعتهای کمباری پول کمتری بدهی.
- به مقیاسپذیری خودکار نیاز داری و میخواهی بدون دخالت دستی instance اضافه شود. مقیاسپذیری خودکار؛ افقی یا عمودی؟ راهنمای انتخاب درست همین تصمیم را باز میکند.
- چند سرویس داری که باید در چند zone پخش شوند و downtime صفر میخواهی.
- میخواهی از سرویسهای مدیریتشده مثل کوبرنتیز مدیریتشده یا فضای ذخیرهسازی آبجکت استفاده کنی و خودت درگیر نگهداری نودی نباشی.
یک نکتهٔ عملی که کمتر گفته میشود: اگر بار تو استاتیک است، قبل از هر تصمیمی دربارهٔ سرور، محتوا را ببر روی شبکهٔ توزیع محتوا. خیلی وقتها همان ۷۰ درصد ترافیک از سرور اصلی برداشته میشود و مسئلهٔ اصلی حل میشود، بدون اینکه لازم باشد معماری را عوض کنی.
مهاجرت عملی: چه چیزی را قبلش اندازه بگیر
قبل از هر جابهجایی، این چهار عدد را روی سرور فعلی ثبت کن:
- میانگین و صدک ۹۵ مصرف CPU و RAM در بازهٔ دو هفته.
- IOPS و throughput دیسک در ساعات اوج.
- ترافیک خروجی ماهانه به گیگابایت.
- latency بین سرور و دیتابیس، اگر جدا هستند.
بعد از مهاجرت، همین چهار عدد را دوباره بگیر. اگر صدک ۹۵ latency دیتابیس بدتر شد، احتمالاً نوع volume را اشتباه انتخاب کردهای، نه اینکه ابر بد باشد. برای اینکه این مقایسه معنی داشته باشد، باید پایش درست داشته باشی؛ راهنمای عملی پایش و هشداردهی هوشمند دقیقاً همین شکاف را پر میکند.
اگر معماری تو چند لایه است و ترافیک از یک لود بالانسر رد میشود، قبل از مهاجرت الگوریتم توزیع بار را هم بازبینی کن. لود بالانسر و الگوریتمهای توزیع بار را یک بار مرور کن؛ خیلی از مشکلاتی که به گردن ابر انداخته میشود، ریشه در تنظیمات لود بالانسر دارد.
و اگر بار تو عمومی است، قبل از هر چیز مطمئن شو لایهٔ محافظت از ترافیک مخرب را داری. یک حملهٔ حجمی میتواند هر دو معماری را از پا در بیاورد، ولی در ابر صورتحساب ترافیک خروجی هم به آن اضافه میشود. روشهای واقعی محافظت در برابر DDoS را جدی بگیر.
اگر میخواهی از یک نقطه شروع کنی، زیرساخت ابری (IaaS) جایی است که کنترل کامل روی instance، volume و شبکه را میدهد بدون اینکه خودت درگیر سختافزار شوی. برای جزئیات فنی هر مؤلفه، مستندات و پایگاه دانش مرجع دقیقتری است.
پرسشهای پرتکرار
آیا سرور ابری همیشه گرانتر از VPS است؟
نه، ولی مدل هزینه فرق دارد. اگر بار تو نوسان دارد و میتوانی خارج از ساعات اوج instance را خاموش کنی، هزینهٔ ابری میتواند کمتر از یک VPS ثابت ماهانه باشد. اما اگر بار تو ۲۴ ساعته و پایدار است، VPS تقریباً همیشه ارزانتر تمام میشود، چون هزینهٔ ذخیرهسازی و ترافیک جداگانه روی هم جمع میشوند.
مهاجرت زنده چه فایدهای برای من دارد؟
فایدهاش در لحظهای است که نود فیزیکی مشکل پیدا میکند. سرویس تو بدون downtime برنامهریزیشده به نود سالم منتقل میشود. اگر SLA داخلی تیمت سختگیرانه است یا سرویس تو مشتری بیرونی دارد، این قابلیت بهتنهایی ارزش انتخاب ابر را دارد.
چرا بعد از مهاجرت به ابر، دیتابیسم کندتر شده؟
در بیشتر موارد مشکل از CPU نیست، از IOPS است. volume شبکهای پایه معمولاً IOPS کمتری از NVMe محلی میدهد. با fio روی هر دو طرف تست بگیر و اگر اختلاف زیاد بود، به volume با IOPS بالاتر مهاجرت کن یا دیتابیس را روی instance با دیسک محلی نگه دار.
برای شروع، VPS را بزرگ کنم یا به ابر بروم؟
اگر مشکل تو فقط ظرفیت است و بارت پایدار، بزرگکردن VPS سریعترین و ارزانترین راه است. اگر مشکل تو نوسان بار، نیاز به مقیاسپذیری خودکار، یا نیاز به چند zone است، بزرگکردن VPS فقط وقت میخرد. اول چهار عدد مصرف را اندازه بگیر، بعد تصمیم بگیر.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!