زمانی که فرآیند تولید نرم افزار به مرحله Production میرسد و اپلیکیشن روی سرور میرود، چالشها و مخاطرات جدیدی برای صاحبان آن ایجاد میشود. ما در عصری هستیم که استفاده از اینترنت به سبک زندگیمان تبدیل شده. بنابراین پس از معرفی اپلیکیشن یا وبسایت، کاربران آن به سرعت افزایش پیدا میکند. صد البته در اکثر موارد افزایش کاربران یک وبسایت، نوید بخش رشد یک کسب و کار و موفقیت آن است؛ اما زمانی فرا میرسد که سیستم دیگر توان هندل کردن حجم بازدیدکنندگان را ندارد.
در مواردی هم حجم دیتا به حدی میرسد که سیستم نمیتواند آن را در پایگاه داده خود ذخیره کند. در این گونه موارد، زمان آن فرا رسیده که سیستم Scale یا مقیاس پذیر شود. اگر علاقه مندید آشنایی اولیه ای با Scale و انواع آن پیدا کنید، ما مقاله ای در مورد این موضوع، با عنوان «مقیاس پذیری یا Scaling چیست؟» آماده کرده ایم. فرآیند مقیاس پذیری به دو دسته کلی Vertical Scale یا مقیاس پذیری عمودی و Horizontal Scale یا مقیاس پذیری افقی تقسیم میشود.
معمولا شرکتها به دلیل راحتی پیاده سازی، به سرعت به مقیاس پذیری عمودی سیستم خود میپردازند. اما در اغلب موارد میتوان با پیاده سازی مقیاس پذیری افقی هزینههای Scale کردن سیستم را به طور چشمگیری کاهش داد. در این مطلب به معرفی مقیاس پذیری افقی میپردازیم.
مقیاس پذیری افقی چیست
مقیاس پذیری افقی به مقیاس پذیری به سمت بیرون نیز معروف است. در این نوع مقیاس پذیری به جای افزایش توان یک سیستم، تعداد سیستم ها را اضافه میکنیم. این سیستمها باید به گونه ای به صورت همزمان و پارالل (Parallel) کار کنند، که کاربر در لایه بیرون از سیستم متوجه تعدد آنها نشود. در واقع یکی از پیچیدگیهای اصلی مقیاس پذیری افقی حل کردن این مسئله است! بنابراین اضافه کردن تعداد سرورها از یکی به دو تا، بسیار پیچیدهتر از تبدیل تعداد آنها به سه، چهار و... است. در حقیقت چالش در قدم اول کار نهفته است!
به مجموعه سرور هایی که در قالب یک سیستم به صورت همزمان کار میکنند، یک کلاستر (Cluster) یا خوشه میگوییم. یک سرور توزیع بار یا Load Balancer وظیفه تقسیم بار پردازشی بین این سرورها را بر عهده دارد. در طول زمان میتوان سرورهای جدیدی خریداری کرد، و به کلاستر اضافه نمود. از این پس شما صاحب یه سیستم Horizontal Scale شده هستید!
سرور لود بالانسر وظیفه دارد تصمیم بگیرد که در لحظه ارسال درخواست یا Request توسط کاربر، کدام سرور وظیفه دارد پاسخگوی درخواست باشد. به این صورت پیچیدگی فرآیند را از نظر کاربر پنهان کرده و آن را یکپارچه نمایش میدهد.
مزایا و معایب استفاده از مقیاس پذیری افقی
اگرچه در مقایسه با یک سیستم Scale نشده، مقیاس پذیری یک اجبار است، اما برای انتخاب بین مقیاس پذیری افقی و عمودی نیاز به دانستن برتریها مزیتها و معایب آن داریم. در زیر تعدادی از مزیتهای استفاده از این روش مقیاس پذیری را به شما میگوییم:
در مقایسه با روش مقیاس پذیری عمودی بسیار ارزانتر است
زمان لود کمتر و کارایی بهتری به سیستم میدهد
احتمال Down شدن سیستم را پایین میآورد
انعطاف پذیری بیشتری به سیستم میدهد
در مقابل، استفاده از روش مقیاس پذیری افقی دارای معایب زیر است:
Join زدن بین جداول مختلف در حالتی که پایگاههای داده حجیم روی سرورهای مختلف تقسیم شده است بین سرورها مشکل و زمان بر میشود.
ممکن است در شرایط خاصی بعضی از سرورها دچار اختلال شوند که استفاده از این روش را برای پردازشها یا Transactionهای بانکی به دلیل ماهیت همزمان آنها تقریبا نامناسب میکند.
نمی توان به راحتی یک عمل را بر عهده یک سرور گذاشت. به عنوان مثال فضای مورد نیاز برای ذخیره سازی تصاویر به دلیل حجم بالای آنها ممکن است از فضای ذخیره سازی یک سرور بیشتر باشد.
نرم افزار مقیاس پذیر چیست؟
به طور کلی یک نرم افزار یا سیستم مقیاس پذیر نرم افزاری است که میتواند در مقیاسهای بزرگتر هم به شکلی پایدار سرویس دهی کند. مثلا فرض کنید یک وب سایت با تعداد بازدید 100 نفر در روز فعالیت میکند. این وب سایت در صورت مقیاس پذیر بودن باید بتواند تعداد بازدید 10000 نفر در روز را به خوبی تحمل کند. البته این به آن معنی نیست که در هنگام مقیاس دادن به سیستمهای مقیاس پذیر احتیاجی به افزایش قدرت سخت افزار (مثل سرور یا سرورهای سایت) نداریم. بلکه به معنی استفاده بهینه از سرورها یا سخت افزارها است. به عنوان نمونه در مورد مثال بالا با 100 برابر شدن میزان بازدید، سیستم باید بتواند با 5 برابر کردن قدرت سرور به خوبی جواب گوی حجم اضافی بازدید بشود.
نتیجه گیری
در این مطلب به معرفی یکی از روشهای رایج Scaling یا مقیاس پذیری به نام مقیاس پذیری افقی پرداختیم. در بسیاری از شرکتها به محض نیاز سیستم به مقیاس پذیری روش مقیاس پذیری عمودی استفاده میشود. در حالی که روش مقیاس پذیری افقی نسبت به همتای عمودی آن، مزیتهای ارزشمندی دارد که آن را در اغلب موارد برای استفاده در اولویت قرار میدهد. آیا شما تجربه کار با این گونه از مقیاس پذیری را دارید؟ به نظر شما مخاطرات استفاده از روش مقیاس پذیری افقی چیست؟