مقیاس عمودی و افقی
مقیاس عمودی (سرور قویتر) در برابر افقی (سرور بیشتر): مزایا، معایب و اینکه چه زمانی کدام را انتخاب کنیم
دو راه رشد
وقتی سرور پر میشود، دو انتخاب دارید:
- عمودی (Scale Up): همین سرور را قویتر کن — CPU بیشتر، RAM بیشتر
- افقی (Scale Out): سرورهای بیشتری اضافه کن و بار را تقسیم کن
مقایسه کامل
| معیار | عمودی | افقی |
|---|---|---|
| پیچیدگی | ساده ✓ | سخت (توزیع بار، State) |
| سقف رشد | محدود ✗ | عملاً نامحدود ✓ |
| تکنقطهشکست | بله ✗ | خیر ✓ |
| هزینه | نمایی (سرور بزرگ گران) | خطی ✓ |
| تغییر کد | لازم نیست ✓ | گاهی (Stateless) |
| نگهداری | ساده ✓ | پیچیده |
پیشنیاز مقیاس افقی: Stateless بودن
سرورها نباید وضعیت کاربر را در حافظه خود نگه دارند! وگرنه کاربر باید همیشه به «همان سرور» برود — توزیع بار خراب میشود:
- ❌ Session در RAM سرور
- ✓ Session در Redis/دیتابیس مشترک
- ✓ JWT (خودکفا در کلاینت)
استراتژی واقعبینانه
- شروع: عمودی — ساده و ارزان برای مقیاس کوچک
- رشد: افقی برای وبسرورها (Stateless طبیعی)
- دیتابیس: اول عمودی + کش، بعد تکرار، آخر شاردینگ (سختترین!)
نکته: قانون عمومی صنعت — «عمودی تا جایی که میشود، افقی وقتی لازم است». حتی گوگل و آمازون همهچیز را افقی نکردهاند؛ دیتابیسهای تحلیلی سنگین اغلب عمودیاند (سرورهای چند ترابایتی RAM!).
جمعبندی
- عمودی: ساده، سقفدار، تکنقطهشکست
- افقی: نامحدود اما نیازمند Stateless + Load Balancer
- ترکیب هوشمند: وب افقی، دیتابیس مرحلهای
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.