Performance و Scalability دو جنبه کلیدی طراحی نرم افزار هستند. در تجربه من در بیشتر بحثهای مربوط به عملکرد و مقیاسپذیری، بسیاری از مردم اغلب از این دو کلمه مترادف استفاده میکنند. در واقع معنی آنها چیزهای متفاوتی است.
Performance به سرعت و اثربخشی یک سیستم تحت یک بار کاری معین در یک بازه زمانی معین اشاره دارد. بهطور کلی، اندازهگیری میکند که نرمافزار چقدر میتواند وظایف مورد نظر خود را به خوبی انجام دهد. دستیابی به سطح قابل قبولی از Performance هنگام توسعه نرم افزار الزامی است. بنابراین، Performance یک معیار کیفیت نرم افزار است. اگر متوجه شویم که الزامات Performance ما تغییر کرده است (به عنوان مثال، خدمات رسانی به کاربران بیشتر، ارائه زمان پاسخ کمتر) یا نمی توانیم اهداف Performance خود را برآورده کنیم، Scalability وارد عمل می شود.
Scalability به ویژگی یک سیستم برای Performance با افزودن منابع اضافی اشاره دارد. اغلب مردم فکر می کنند که سیستم آنها در خارج از جعبه Scalability است. «اگر نیاز داریم به کاربران بیشتری خدمات رسانی کنیم، فقط سرور اضافی اضافه میکنیم» یک پاسخ معمولی برای مشکلات Performance است. با این حال، فرض بر این است که سیستم مقیاس پذیر است، به این معنی که افزودن منابع اضافی واقعا به بهبود Performance کمک می کند. سیستم های نرم افزاری که Scalability را به عنوان هدف طراحی ندارند، اغلب Scalability خوبی را ارائه نمی دهند.
انواع مقیاس پذیری
دو نوع مقیاس پذیری، مقیاس عمودی (مقیاس سازی) به معنای افزودن منابع به یک ماشین واحد است. افزایش تعداد ماشین های موجود را مقیاس بندی افقی (اسکیل کردن) می گویند. به طور سنتی، افزودن منابع بیشتر به همان سرور روش ترجیحی مقیاسسازی بوده است، اما الزامات برنامههای کاربردی مدرن دیگر با پیکربندیهای منابع موجود برآورده نمیشوند و از نظر هزینه نیز برای کسبوکار امکانپذیر نیستند. بنابراین، این روزها بیشتر مقیاسپذیری تنها به رویکرد مقیاسبندی اشاره دارد.
به طور خلاصه، برنامهها و پلتفرمها باید با مقیاسبندی در ذهن طراحی شوند، به طوری که افزودن منابع منجر به بهبود عملکرد شود.