زمانی که اپلیکیشن یا وبسایت خود را بر روی هاست آپلود میکنید، از چنین تجربه ای خوشحال هستید. همه چیز هیجان انگیز و خوب به نظر میرسد. بازدیدکنندگان سایت شما رفته رفته افزایش پیدا میکند. تا زمانی که بر اثر افزایش ترافیک بازدیدکنندگان بر روی سرور، اپلیکیشن شما Down میشود! اگر وبسایت بزرگی داشته باشید، این اتفاق ممکن است ضررهای جبران ناپذیری را به کسب و کار شما وارد کند.
همانطور که متوجه شدید، بردن یک اپلیکیشن به محیط Production چالشها و مخاطرات خاص خود را دارد و صرفا محدود به برنامه نویسی آن نمیشود. برای جلوگیری از Down شدن سایت، باید اصطلاحا آن را Scale یا مقیاس پذیر کنید. در این مطلب به معرفی Scale و انواع آن میپردازبم.
مقیاس پذیری چیست
مقیاس پذیری به زبان ساده یعنی توانایی یک سیستم یا اپلیکیشن برای مدیریت افزایش ترافیک بازدید کاربران. البته این مدیریت باید به طریقی انجام شود که کاربران متوجه هیچگونه تغییری در سیستم نشوند. یعنی این کار باید با حفظ کیفیت تجربه کاربری (UX) انجام پذیرد.
بخاطر رسیدن به مقیاس پذیری روش سیستمهای توزیع شده یا Distributed Systems معرفی شد. با استفاده از این روش، مثلا با 10 برابر شدن تعداد بازدیدکنندگان باید منابع سیستم نیز 10 برابر شود و این کار به طریقی انجام شود که کاربران از بیرون متوجه تعدد سیستمها نشوند. در واقع در سیستمهای توزیع شده در ظاهر اینطور به نظر میرسد که فقط یک سرور پاسخگوی درخواستهای کاربران است.
روشهای مقیاس پذیری یا Scaling به دو دسته اصلی تقسیم میشوند:
مقیاس پذیری عمودی (Vertical Scaling)
مقیاس پذیری افقی (Horizontal Scaling)
مقیاس پذیری عمودی
مقیاس پذیری عمودی یا مقیاس پذیری به سمت بالا (Scaling Up)، زمانی انجام میشود که اپلیکیشن توان هندل کردن بار حجم بالای اطلاعات را نداشته باشد. تصور کنید که شما یک دیتابیس با 10 گیگابایت اطلاعات دارید اما سرور توانایی هندل کردن آن را ندارد. برای هندل کردن این بار اضافی، شما یک سرور گران قیمت جدید با حجم 2 ترا بایت را خریداری میکنید. حالا سرور شما میتواند اطلاعات بیشتری را در خود ذخیره کند! با این کار شما از روش مقیاس پذیری عمودی استفاده کرده اید.
مقیاس پذیری افقی
فرایند مقیاس پذیری افقی که به آن مقیاس پذیری به سمت بیرون (Scaling Out) نیز میگویند، برخلاف نوع عمودی آن که روی ارتقای یک سرور تمرکز داشت، روی اضافه کردن تعداد سرورها متمرکز است. در واقع شما تمرکز را از یک سرور برداشته، و بین چندین سرور که خریداری کرده اید، به طور مناسب توزیع میکنید. باید توجه داشت که پیچیدگی این روش بسیار بیشتر از روش عمودی است اما در بسیاری موارد راه حل کم هزینهتری است.
نتیجه گیری
در این مطلب به توضیح در مورد مقیاس پذیری یا Scaling پرداختیم. همانطور که گفته شد، پس از رفتن اپلیکیشن به مرحله Production، رفته رفته سیستم با چالش هایی مثل هندل کردن ترافیک بسیار بالا مواجه میشود که در صورت بی توجهی میتواند آسیبهای جبران ناپذیری را برای کسب و کار شما وارد نماید. مقیاس پذیری فرآیند کنترل این ترافیک است. مقیاس پذیری، به دو نوع مقیاس پذیری افقی و عمودی تقسیم میشود که در این مطلب به معرفی اجمالی آنها پرداختیم. آیا شما تجربه Scale کردن سایتها یا اپلیکیشنهای خود را داشته اید؟ از خواندن تجربیات شما در قسمت نظرات خوشحال میشویم!