پایگاه دانش » توسعه و رشد سیستم های تحت وب

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

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

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

» اعمال سیستم Caching

در این روش ما سیستم حافظه نهان یا cache را به دو قسمت تقسیم میکنیم:

  1. cache تنظیم شده در سرور (opcode cache)، با این روال که تمامی صفحات ایجاد شده در سایت بعد از یکبار اجرا و compile شدن ، برای دفعات بعدی نیازی به compile مجدد نداشته باشند.
  2. cache کامل صفحات سایت (on-the-fly cache و pre-generate pages)، به این مفهوم که بعد از اجرای هر صفحه، خروجی در یک فایل جداگانه ذخیره شده، تا برای دفعات بعدی نیاز به فراخوانی مجدد Middleware و Database نباشد.

» اعمال توازن بار ترافیکی (Load Balancing)

در این روش سعی بر این هست که درخواستهای کاربران را در سرورهای مختلفی که سیستم ما روی آنها نصب میباشد به صورت هوشمندانه پخش کنیم تا یک سرور مسئول تحمل بار زیاد درخواستیها نشود. این توازن میتواند در سطح نرم افزاری و سخت افزاری اجرا شود. همچنین تکنیکهایی از جمله Cloud Servers و CDN Servers میتوانند در این راستا استفاده شوند.

Load balancing میتواند در سطح Middleware یا Database و یا هردو اجرا شود، انتخاب روش با توجه به تحلیل سیستم و میزان ترافیک متحمل شده سرور بدست میاید. در روش اعمال توازن روی Middleware و WebServer باید در نظر داشت که FileSystem به اشتراک گذاشته شود و یا اینکه کاملا حذف شود. همچنین برای اعمال روش توازن با Database بک راه جداسازی سرور بانک اطلاعاتی میباشد و راه دیگر استفاده از تکنیکهای Master-Slave در جهت تفکیک خواندن و نوشتن در database خواهد بود.

کاهش میزان Fetch وب سرور با تکنیکهای مختلف و استفاده از دامنه های متفاوت برای پخش نمودن ترافیک دریافتی، میتواند تغییرات بسیار محسوسی را ایجاد نماید.

» بهینه سازی Database

بهینه سازی بانک اطلاعاتی مفاهیم بسیار زیادی را در بر گرفته و مواردی از جمله انتخاب بانک اطلاعاتی، نوع اتصال، تحلیل Relation جداول، انتخاب index و نوع ذخیره سازی داده ها ، را میتواند شامل شود.
استفاده از روشهای مختلف تقسیم کردن بانک و جداول (Data Sharding) که میتواند در سطح database و Middleware انجام گرفته و در دو حالت Horizontal و Vertical اجرا شود، جزء مهمترین بخشها از نظر میزان تاثیرپذیری در سیستم می باشند. اعمال این تغییرات، برخلاف موارد فوق، مستلزم برنامه نویسی و هزینه زمان بیشتری خواهند بود.

 

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

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

تمامی حق و حقوقات چاپ، نشر و استفاده شخصی از مطالب فوق برای Untrop.com محفوظ میباشد.
آخرین بروزرسانی : ۱۰ دی ۱۳۹۳ | تعداد بازدید : 1391