Horizontal Scaling چیست؟



visibility  
mode_comment   ۰

زمانی که  فرآیند تولید نرم افزار به مرحله Production می رسد و اپلیکیشن روی سرور می رود، چالش ها و مخاطرات جدیدی برای صاحبان آن ایجاد می شود. ما در عصری هستیم که استفاده از اینترنت به سبک زندگیمان تبدیل شده. بنابراین پس از معرفی اپلیکیشن یا وبسایت، کاربران آن به سرعت افزایش پیدا می کند. صد البته در اکثر موارد افزایش کاربران یک وبسایت، نوید بخش رشد یک کسب و کار و موفقیت آن است؛ اما زمانی فرا می رسد که سیستم دیگر توان هندل کردن حجم بازدیدکنندگان را ندارد.

در مواردی هم حجم دیتا به حدی می رسد که سیستم نمی تواند آن را در پایگاه داده خود ذخیره کند. در این گونه موارد، زمان آن فرا رسیده که سیستم Scale یا مقیاس پذیر شود. اگر علاقه مندید آشنایی اولیه ای با Scale و انواع آن پیدا کنید، ما مقاله ای در مورد این موضوع، با عنوان «مقیاس پذیری یا Scaling چیست؟» آماده کرده ایم. فرآیند مقیاس پذیری به دو دسته کلی Vertical Scale یا مقیاس پذیری عمودی و Horizontal Scale یا مقیاس پذیری افقی تقسیم می شود.

معمولا شرکت ها به دلیل راحتی پیاده سازی، به سرعت به مقیاس پذیری عمودی سیستم خود می پردازند. اما در اغلب موارد می توان با پیاده سازی مقیاس پذیری افقی هزینه های Scale کردن سیستم را به طور چشمگیری کاهش داد. در این مطلب به معرفی مقیاس پذیری افقی می پردازیم.

مقیاس پذیری افقی چیست

مقیاس پذیری افقی به مقیاس پذیری به سمت بیرون نیز معروف است. در این نوع مقیاس پذیری به جای افزایش توان یک سیستم، تعداد سیستم  ها را اضافه می کنیم. این سیستم ها باید به گونه ای به صورت همزمان و پارالل (Parallel) کار کنند، که کاربر در لایه بیرون از سیستم متوجه تعدد آن ها نشود. در واقع یکی از پیچیدگی های اصلی مقیاس پذیری افقی حل کردن این مسئله است! بنابراین اضافه کردن تعداد سرور ها از یکی به دو تا، بسیار پیچیده تر از تبدیل تعداد آن ها به سه، چهار و... است. در حقیقت چالش در قدم اول کار نهفته است!

به مجموعه سرور هایی که در قالب یک سیستم به صورت همزمان کار می کنند، یک کلاستر (Cluster) یا خوشه می گوییم. یک سرور توزیع بار یا Load Balancer وظیفه تقسیم بار پردازشی بین این سرور ها را بر عهده دارد. در طول زمان می توان سرور های جدیدی خریداری کرد، و به کلاستر اضافه نمود. از این پس شما صاحب یه سیستم Horizontal Scale شده هستید!

horizontal scaling چیست

سرور لود بالانسر وظیفه دارد تصمیم بگیرد که در لحظه ارسال درخواست یا Request توسط کاربر، کدام سرور وظیفه دارد پاسخگوی درخواست باشد. به این صورت پیچیدگی فرآیند را از نظر کاربر پنهان کرده و آن را یکپارچه نمایش می دهد.

مزایا و معایب استفاده از مقیاس پذیری افقی

اگرچه در مقایسه با یک سیستم Scale نشده، مقیاس پذیری یک اجبار است، اما برای انتخاب بین مقیاس پذیری افقی و عمودی نیاز به دانستن برتری ها مزیت ها و معایب آن داریم. در زیر تعدادی از مزیت های استفاده از این روش مقیاس پذیری را به شما می گوییم:

  • در مقایسه با روش مقیاس پذیری عمودی بسیار ارزان تر است
  • زمان لود کمتر و کارایی بهتری به سیستم می دهد
  • احتمال Down شدن سیستم را پایین می آورد
  • انعطاف پذیری بیشتری به سیستم می دهد

در مقابل، استفاده از روش مقیاس پذیری افقی دارای معایب زیر است:

  • Join زدن بین جداول مختلف در حالتی که پایگاه های داده حجیم روی سرور های مختلف تقسیم شده است بین سرورها مشکل و زمان بر می شود.
  • ممکن است در شرایط خاصی بعضی از سرور ها دچار اختلال شوند که استفاده از این روش را برای پردازش ها یا Transaction های بانکی به دلیل ماهیت همزمان آن ها تقریبا نامناسب می کند.
  • نمی توان به راحتی یک عمل را بر عهده یک سرور گذاشت. به عنوان مثال فضای مورد نیاز برای ذخیره سازی تصاویر به دلیل حجم بالای آن ها ممکن است از فضای ذخیره سازی یک سرور بیشتر باشد.

نرم افزار مقیاس پذیر چیست؟

به طور کلی یک نرم افزار یا سیستم مقیاس پذیر نرم افزاری است که می تواند در مقیاس های بزرگ تر هم به شکلی پایدار سرویس دهی کند. مثلا فرض کنید یک وب سایت با تعداد بازدید 100 نفر در روز فعالیت می کند. این وب سایت در صورت مقیاس پذیر بودن باید بتواند تعداد بازدید 10000 نفر در روز را به خوبی تحمل کند. البته این به آن معنی نیست که در هنگام مقیاس دادن به سیستم های مقیاس پذیر احتیاجی به افزایش قدرت سخت افزار (مثل سرور یا سرورهای سایت) نداریم. بلکه به معنی استفاده بهینه از سرور ها یا سخت افزار ها است. به عنوان نمونه در مورد مثال بالا با 100 برابر شدن میزان بازدید، سیستم باید بتواند با 5 برابر کردن قدرت سرور به خوبی جواب گوی حجم اضافی بازدید بشود.

نتیجه گیری

در این مطلب به معرفی یکی از روش های رایج Scaling یا مقیاس پذیری به نام مقیاس پذیری افقی پرداختیم. در بسیاری از شرکت ها به محض نیاز سیستم به مقیاس پذیری روش مقیاس پذیری عمودی استفاده می شود. در حالی که روش مقیاس پذیری افقی نسبت به همتای عمودی آن، مزیت های ارزشمندی دارد که آن را در اغلب موارد برای استفاده در اولویت قرار می دهد. آیا شما تجربه کار با این گونه از مقیاس پذیری را دارید؟ به نظر شما مخاطرات استفاده از روش مقیاس پذیری افقی چیست؟

7Learn Experts
comment دیدگاه کاربران

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :