ویرگول
ورودثبت نام
mahdi shirinabadi
mahdi shirinabadiکسی که خودش رو سنیور نمیدونه ولی بقیه میدونن!
mahdi shirinabadi
mahdi shirinabadi
خواندن ۳ دقیقه·۲ ماه پیش

تفاوت مقیاس‌پذیری افقی و عمودی

سلام به همه‌ی برنامه‌نویس‌ها، دولوپرها و دوستان عزیز DevOps!
یکی از پر تکرارترین مفاهیمی که تقریباً در تمام مصاحبه‌های فنی، طراحی سیستم‌ها و معماری میکروسرویس‌ها با آن روبه‌رو می‌شویم، بحث مقیاس‌پذیری (Scalability) است.
اما سؤال اصلی اینجاست:
مقیاس‌پذیری افقی و عمودی دقیقاً یعنی چه؟
و چرا اغلب این دو را با هم قاطی می‌کنیم؟


🧠 قانون طلایی

افقی = تعداد بیشتر
عمودی = قدرت بیشتر

فقط همین دو خط را در ذهنت نگه دار، چون کلید درک همه‌ی ماجراست!

🚗 مثال روزمره برای درک بهتر

فرض کن می‌خواهی ۱۰۰ نفر را از تهران به شمال ببری.
دو انتخاب داری:

  • راه اول (افقی):
    ۱۰ تا پیکان قدیمی می‌خری و هر کدام ۱۰ نفر را سوار می‌کنی.
    این یعنی تعداد وسیله‌ها را زیاد کردی → مقیاس‌پذیری افقی

  • راه دوم (عمودی):
    یک اتوبوس VIP می‌خری که همان ۱۰۰ نفر را با راحتی کامل و وای‌فای می‌برد.
    یعنی قدرت همان وسیله را بالا بردی → مقیاس‌پذیری عمودی

دیدی چقدر ساده است؟

💻 حالا بیایید وارد دنیای نرم‌افزار شویم

فرض کن یک اپلیکیشن Spring Boot داری که ۱۰۰۰ کاربر هم‌زمان دارد.

مقیاس‌پذیری افقی:

۱۰ تا سرور جدید راه می‌اندازی و جلوی آن‌ها یک Load Balancer قرار می‌دهی.
هر سرور بخشی از درخواست‌ها را پاسخ می‌دهد.
👉 تعداد سرورها زیاد شد → افقی

مقیاس‌پذیری عمودی:

به جای چند سرور، همان سرور فعلی را ارتقا می‌دهی:
مثلاً از ۸ گیگ رم به ۶۴ گیگ، یا از ۴ هسته CPU به ۳۲ هسته.
👉 قدرت همان سرور افزایش یافت → عمودی
⚙️ مثال از Kafka

فرض کن از Kafka برای پردازش لاگ‌های کاربران استفاده می‌کنی.

  • افقی: تعداد پارتیشن‌ها را از ۴ به ۱۶ افزایش می‌دهی و ۳ تا broker جدید اضافه می‌کنی.
    حالا سیستم می‌تواند میلیون‌ها پیام در ثانیه را مدیریت کند.
    → مقیاس‌پذیری افقی

  • عمودی: همان broker را با یک سرور جدید جایگزین می‌کنی که SSD NVMe و ۱۲۸ گیگ رم دارد.
    → مقیاس‌پذیری عمودی


🗄️ مثال از دیتابیس

فرض کن یک دیتابیس MySQL داری که کم‌کم کند شده است.

  • افقی:

    • یک Read Replica اضافه می‌کنی تا کوئری‌های SELECT به آن بروند.

    • یا دیتابیس را Sharding می‌کنی (هر گروه از کاربران روی سرور جدا).
      → مقیاس‌پذیری افقی

  • عمودی:
    سرور دیتابیس را ارتقا می‌دهی (CPU، RAM، SSD سریع‌تر).
    → مقیاس‌پذیری عمودی


🧩 ترفند حافظه (Mnemonic)

افقی (Horizontal) → با حرف H شروع می‌شود → «هزار تا سرور»
عمودی (Vertical) → با حرف V شروع می‌شود → «یکی ولی قوی»


⚡ تست ۲ ثانیه‌ای — ببین درست بلدی یا نه!

۱. ۵ تا سرور جدید راه انداختم → ✅ افقی
۲. رم سرور را از ۱۶ به ۶۴ گیگ افزایش دادم → ✅ عمودی
۳. پارتیشن‌های Kafka را زیاد کردم → ✅ افقی
۴. CPU سرور RabbitMQ را ارتقا دادم → ✅ عمودی

اگه همه را درست گفتی، تبریک! 🎉 تو کاملاً مفاهیم رو درک کردی.


🏁 قانون طلایی نهایی

اگر تعداد چیزی را زیاد کردی → افقی
اگر قدرت همان چیز را بالا بردی → عمودی


🎯 چرا دانستن این موضوع مهم است؟

در طراحی سیستم، مقیاس‌پذیری اساس پایداری و رشد اپلیکیشن است.
در مصاحبه‌های شغلی هم معمولاً ازت می‌پرسند:

«اگر ترافیک بالا بره، چطور سیستم رو scale می‌کنی؟»

  • اگر بگویی: «سرور را قوی‌تر می‌کنم» → یعنی عمودی

  • اگر بگویی: «چند تا instance دیگر راه می‌اندازم» → یعنی افقی

اشتباه در این مفاهیم ممکن است باعث شود مصاحبه‌کننده فکر کند درک دقیقی از معماری سیستم نداری.


✍️ جمع‌بندی در ۲ خط

  • افقی = اضافه کردن سرور / پارتیشن / ماشین

  • عمودی = قوی‌تر کردن همان سرور / ماشین

مقیاس پذیریscalability
۲
۰
mahdi shirinabadi
mahdi shirinabadi
کسی که خودش رو سنیور نمیدونه ولی بقیه میدونن!
شاید از این پست‌ها خوشتان بیاید