Scalability یا مقیاس پذیری چیست ؟!
Scalability زمانی مطرح می شود که یک وب سایت یا برنامه، کاربران زیادی را داشته باشد ( یعنی استفاده کننده های همزمان زیادی را بخواهد پوشش دهد ) و یا بخواهد پردازش های سنگینی را روی اطلاعات و دیتای ذخیره شده انجام دهد. و در این صورت نباید کارایی و performance برنامه کاهش پیدا کند. زمانی که برنامه ما کاربران محدودی دارد ، شاید بحث در مورد واژه مقیاس پذیری محلی از اعراب نداشته باشد ( گرچه همیشه باید این موضوع را هر چند به طور خفیف مورد عنایت قرار دهیم )، اما زمانی که برنامه ما به طور وسیعی توسط کاربران در هر ساعتی از شبانه روز مورد استفاده قرار می گیرد، این جاست که اگر برنامه ما از کارایی لازم برخودار نباشد، با شکست مواجه خواهیم شد.
اکثر برنامه هایی که با کاربران سر و کار دارند حد اقل از سه بخش عمده تشکیل شده اند. بخش اول ، بخشی است که کاربران مستقیم با آن در ارتباط هستند ( همیشه در حال کلیک و یا تایپ و یا کار با موشواره هستید) یعنی همان جا که اطلاعات و بخش های نرم افزار توسط چشمانمان قابل مشاهده است که به این بخش واسط کاربری می گویند ( User Interface ). بخش دوم ، قسمتی است که در آن پردازش های لازم بر روی اطلاعات دریافت شده ( از بخش سوم ) انجام شده و به نحو قابل فهم و قابل تفسیری به شکل گویا به کاربران نمایش داده می شود، شاید این لایه اسامی ترجمه شده عجیبی داشته باشد، چون این لایه با اسامی مانند “لایه کسب و کار” ، “لایه منطق تجاری (business logic layer)” ، ” لایه منطقی برنامه” خوانده می شود. ما اینجا اسم دیگری برای آن مشخص می کنیم، از آنجا که این لایه وظیفه ارتباط با لایه اول ( واسط کاربری ) و لایه سوم ( لایه دیتا ) را دارد به آن لایه میانی می گوییم. بخش سوم نیز بخش بانک اطلاعاتی یا به اصطلاح لایه دیتا (Data Layer) است که کلیه ذخیره سازی های مربوط به اطلاعات و عملیات چند گانه ( درج و حذف و ویرایش و گزارش گیری از دیتا و … ) در این لایه انجام می گیرد. ( البته بخشی از برخی از این کار های مربوط به لایه دیتا ممکن است بنا به دلایلی در لایه میانی نیز انجام گیرد.) این لایه ارتباط مستقیم با دیسک سخت ( یا همان هارد کامپیوتر ) دارد. در هر کدام از این سه لایه در هر لحظه پردازش های مختص آن لایه در حال انجام است و هر کدام به اندازه لازم از منابع سخت افزاری و نرم افزاری استفاده می کنند .
این مقدمه چینی را کردیم که با این موضوع برسیم که در برنامه های کوچک تمامی این سه لایه می توانند داخل یه باکس یکتا قرار بگیرند و بحث لایه ها دیگر مطرح نباشد. یعنی این سه لایه را به صورت یک لایه واحد ببینیم.( هر اسمی هم بخواهیم می توانیم برای آن قرار دهیم). ولی در برنامه های بزرگ، داستان تغییر میکند چون درخواست ها از برنامه بسیار زیاد بوده و در هر لحظه Request های زیادی به برنامه ارسال می شود، برای بالا بردن کارایی ، این نیاز پیدا می شود که هر لایه روی یک دستگاه جداگانه قرار بگیرد که در استفاده از منابع سخت افزاری و نرم افزاری دچار کمبود نشویم. نوشتن برنامه های با این صورت و با در نظر گرفتن تمامی لایه های لازم، باعث می شود که برنامه ما Scalable یعنی مقیاس پذیر شود.