سیاوش بشارتی نیا
سیاوش بشارتی نیا
خواندن ۲ دقیقه·۳ سال پیش

مفهوم ScaleUp و ScaleOut در طراحی نرم افزار

  • آیا تا به حال چیزی در مورد مقیاس پذیری افقی (Horizontall scalability ) و مقیاس پذیری عمودی (Verticall scalability) شنیدید ؟ صرف نظر از پاسخ ، این مقاله رو تا انتها بخونید دو دقیقه بیشتر وقتتون رو نمیگیره دی:)
  • اصلا معنای مقیاس پذیری (scalability )چیست ؟
  • تاب آوری (Resilience) و دسترسی پذیری بالا (high availability) در زمان افزایش ترافیک (teraffic) از نشانه های سلامت برنامه هستند
  • هر چقدر نرم افزار بصورت همزمان درخواست های بیشتری را به طور موثر پردازش و پشتیبانی کند ، میگوییم از مقیاس پذیری بالاتری برخوردار هست
  • یا شاید هم اینجوری بگیم بهتر باشه : وقتی نرم افزاری نمیتونه با افزایش ترافیک به درخواست ها پاسخ بده معنی اش اینه که از مقیاس پذیری پایینی برخورداره. این زمانی اتفاق میوفته که منابع سخت افزاری (شامل Cpuو ram , هارد و ... ) به اتمام میرسه یا به اصطلاح Runs out بشه.
  • در اینجا افزایش ظرفیت منابع به دو صورت عمودی و افقی صورت میگیره
  • اما تفاوت اصلی این دو روش در چیه ؟
  • در روش "Scaling Vertically" توان محاسباتی سخت افزار رو با اضافه کردن رم و سی پی یو و هارد و .. بالاتر میبریم یا به اصطلاح میگیم که "ScaleUp" کردیم :)
  • اما تو روش "Scaling Horizontally" ما توان پردازشی و محاسباتی امون رو با افزایش ماشین توی استخر منابعمون بالاتر میبریم که اصطلاحا میگیم ScaleOut کردیم ، به همین راحتی : )
Verticall scalabilityvs  Horizontall scalability
Verticall scalabilityvs Horizontall scalability


خب حالا دونستنش چه به درد میخوره ؟ علاوه بر این که هر کدوم یک سری پوینت هایی به ما در مورد :

کارآیی (Performance)، انعطاف پذیری (flexibility)، توزیع جغرافیایی (Geographical Distribution) (یعنی بخش های مختلف سیستممون در چند نقطه دنیای توزیع بشه) و افزونه پذیری (Redundancy) و هزینه (Cost) میده همچنین واسه این خوبه که شما وقتی میخوای ابزاری رو برای توسعه نرم افزارت انتخاب کنی بدونی از کدوم مدل مقیاس پذیری استفاده میکنه : مثلا rabbitMq از مقیاس پذیری عمودی یا همون ScalUp فقط پشتیبانی میکنه ولی رقیبش Kafka از مقیاس پذیری افقی Scaleout پشتیبانی میکنه یا مثلا mySql از ScalUp ولی مونگو از Scaleout پشتیبانی میکنه خلاصه که در حین بررسی انتخاب ابزار و تکنولوژی از این مهم غافل نشید . /


برنامه نویسیمیکروسرویسprogrammingسیستم های توزیع شدهمعماری نرم افزار
دنیا مثل یه کتابه . هر جایی که پا گذاشتی هر کاری که کردی مثل صفحه ای هست که خوندی
شاید از این پست‌ها خوشتان بیاید