چرا ‌سايت‌هاي بزرگ با جاوا توليد نمي‌شوند؟

نويسنده: شهرام انسان- دنياي كامپيوتر و ارتباطات
_______________________________________
در دنياي نرم‌افزاري‌هاي مالي اداري جاوا و تكنولوژي‌هاي مرتبط همانند J2EE در سطح بسيار وسيعي به كار برده‌شده‌اند. در سال‌هاي اخير رشد سريع در بازار سرمايه بكارگيري تكنولوژي‌هاي جديد ميان‌افزارها را براي افزايش كارائي در منابع پردازشي و حافظه موجب شده‌است.
چرا وب‌سايت‌هاي بزرگ با جاوا توليد نمي‌شوند؟

در دنياي توليدكننده نرم‌افزارهاي كاربردي تحت وب با جاوا، هميشه سوال فوق به عنوان يك پارادوكس مطرح بوده‌ است.
در مجموعه مقالات نرم‌افزارهاي كاربردي (Enterprise application) كه در شماره‌هاي گذشته به آن پرداخته شده، تعريف جامعي از اين گونه نرم‌افزارها و دلايل مناسب بودن مجموعه تكنولوژي‌هاي جاوا براي آن عنوان شده است.
در اينجا نگاهي خاص به وب‌سايت‌هاي بزرگ همچون Flicker، YouTube، Wikipedia و حتي گوگل خواهيم داشت. در مورد سايت‌هاي بزرگ وب، نكته‌اي كه در نظر اول جلب توجه مي‌كند، تعداد بالاي كاربران آنها در سطح جهان و نيز ميزان مراجعه بالاي كاربران به قسمت‌هاي مختلف آن سايت‌ها مي‌باشد.
شايد حجم بسيار بالاي پهناي باند و ذخيره‌سازي اطلاعات، به خصوص در مواردي كه نوع كار سايت مرتبط با داده‌هاي چند رسانه‌اي همانند ويدئو يا تصوير است مشخصه اصلي آنها باشد.
با يك حساب سرانگشتي مي‌توان حجم بسيار بالاي درخواست‌هاي ارسال شده به گوگل آن هم فقط براي جست‌وجو در طول يك روز كاري را با توجه به مصرف متوسط يك كاربر و تعداد كاربران جست‌وجوي گوگل در جهان حساب نمود! حقيقت اين است كه اگر چه يكي از اصول اوليه طراحي معماري در نرم‌افزارهاي كاربردي تحت وب تعداد بالاي كاربران هم‌زمان بوده است، اما وب‌سايت‌هاي بزرگ در طبقه‌بندي ديگري از لحاظ تعداد كاربران و حجم تبادل اطلاعات و صدالبته عمليات مالي اداري مرتبط با نوع كسب‌وكار خود قرار مي‌گيرند.
با كمي دقت مشاهده مي‌شود كه بيشتر وب‌سايت‌هاي بزرگ، حجم عمليات كنترل منطقي – مالي بسيار كوچك‌تري نسبت به نرم‌افزارهاي كاربردي دارند، و در ازاي آن كارائي (Performance) نقش موثرتري را در حيات آنها بازي مي‌كند.
در توازن قوا بين كنترل منطقي – مالي و كارائي، نرم‌افزارهاي كاربردي در قسمت اول و وب‌سايت‌هاي بزرگ در قسمت دوم تمركز بالاتري دارند. نكته بسيار مهم ديگر، حجم نرم‌افزار و بحث توليدپذيري(Productivity) آن است. در وب‌سايت‌هاي بزرگ بر حسب نوع كارشان، تعداد صفحات رابط كاربري بسيار محدود است و ممكن است در محدوده‌اي بين 10 تا 100 صفحه تعريف شوند و هدف اصلي افزايش كارايي تعدادي محدود از صفحات سايت است به طوري كه بتوان از عملكرد آن در رويارويي با ترافيك بالا اطمينان حاصل نمود.
در صورتي كه كه در نرم‌افزارهاي كاربردي تحت وب ممكن است تعداد صفحات يك برنامه مالي اداري جامع به هزاران صفحه با درجه بالايي از پيچيدگي برسد و جاوا به عنوان يك تكنولوژي منحصر به فرد در كارائي و توليدپذيري بالا به عنوان تنها گزينه قابل انتخاب مطرح است.
در جدول زير سيستم‌عامل، تكنولوژي وب، زبان، بانك اطلاعاتي و استفاده يا عدم استفاده از Memcached در مورد چند وب‌سايت بزرگ كه در گزارش سايت Pingdom گردآوري شده، نمايش داده مي‌شود:

با كمي بررسي به نظر مي‌رسد كه بيشتر وب‌سايت‌هاي بررسي شده در فوق، تركيب LAMP (تركيبي شامل از Linux/Apache/Mysql/PHP) را به عنوان تكنولوژي مركزي زمان اجراي خود برگزيده‌اند.
در برخي موارد استفاده از روش‌هاي ذخيره‌سازي در حافظه همانند Memcache كندي بانك‌اطلاعاتي را جبران كرده ‌است. البته در مواردي خاص‌تر همانند گوگل، خود كمپاني اقدام به توليد تكنولوژي مصرفي خود نموده است.
به عنوان مثال گوگل فايل سيستم (Google File System)، تكنولوژي انحصاري گوگل براي خواندن و نوشتن فايل‌ها به گونه‌اي نياز به استفاده از بانك‌هاي اطلاعاتي رابطه‌اي حجيم در موتور جست‌وجوي آن را منتفي كرده‌ است.
در اين گونه موارد، نيازمندي‌هاي خاص صاحبان سايت را مجبور به توليد تكنولوژي‌اي منحصربفرد و دقيقاً مطابق با مصرف خود كرده كه اين امر معمولا‌ با هزينه‌هاي بالا نيز همراه است. تبادل داده در وب‌سايت‌هاي بزرگ با برنامه‌هاي مالي اداري كه از جاوا در آنها استفاده مي‌شود، تفاوت بسياري دارد. در دنياي نرم‌افزاري‌هاي مالي اداري جاوا و تكنولوژي‌هاي مرتبط همانند J2EE در سطح بسيار وسيعي به كار برده‌شده‌اند.
در سال‌هاي اخير رشد سريع در بازار سرمايه بكارگيري تكنولوژي‌هاي جديد ميان‌افزارها را براي افزايش كارائي در منابع پردازشي و حافظه موجب شده‌است. نيازي واحد كه راه‌حل‌هاي متفاوتي را در هر يك از دو دسته از نرم‌افزارهاي فوق مي‌طلبد. در نرم‌افزارهاي كاربردي با گسترش تكنولوژي‌هايي همانند Compute Grid، Data Grid و Spring و در وب‌سايت‌هاي بزرگ با تغيير و توليد پياده‌سازي‌هاي خاص خود از LAMP سعي در حل مشكل شده‌است.
در يك جمع‌بندي كلي شباهت‌هايي در راه‌حل‌هاي هر دو دسته ديده مي‌شود. به عنوان مثال در قسمت دسترسي داده همانطور كه در فوق ذكر شد استفاده از تكنولوژي‌هاي cache يا استفاده از Partitioning به جاي بهره بردن از بانك اطلاعاتي مركزي را مي‌توان نام برد.
در قسمت عمليات منطقي/ مالي نيز اضافه نمودن تكنولوژي‌هاي موازي سازي پردازش همانند MapReduce (http://labs.google.com/papers/mapreduce.html)، استفاده از مدل‌هاي مقياس‌پذير در معماري براي افزودن قابليت رشد خطي در نرم‌افزار يا بكارگيري تكنولوژي‌هاي جديد ارتباط با سرور همانند Ajax به‌ جاي استفاده از مدل سنتي درخواست/پاسخ را نام برد.
در يك جمع‌بندي نهايي شايد موارد زير پاسخي به پرسش مطرح شده در عنوان اين نوشتار باشد:
- راه‌حل‌هاي مبتني بر LAMP راه‌حل‌هايي كم هزينه و قابل سفارشي‌سازي هستند (به علت سورس آزاد بودن جميع آنها)
- جاوا همچنان در خيلي از موارد استفاده مي‌شود، اما در سايت‌هاي بزرگ به عنوان تكنولوژي حاشيه‌اي يا پشت صحنه در نظر گرفته شده‌است، همانند استفاده از سرويس‌هاي Servlet در Flicker.

منبع : ایتنا الف