مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • إضافات
  • برمجة
  • تصميم
  • تطوير
  • فعاليات
  • كتب
  • لقاءات
  • مدونات عربية
  • مشاريع
  • مهمات
  • مواقع

التويتر من الداخل وسيئة الروبي

October 3, 2008 - الجمعة 04 شوال 1429 التصنيف: برمجة

في مقابلة مع مطور من مطوري التويتر Alex Payne (حالياً هو مدير فريق تطوير API في تويتر وهي العمود الفقري وتشكل نسبة العظمى من تطوير التويتر وهي أيضاً سبب انتشار التويتر) أجاب عن عدة أسئلة ولكن مايهمني منها هي الأسئلة المتعلقة ببنية التويتر البرمجية وتناول أيضاً أكبر سيئة للروبي وبالتأكيد الروبي أون ريلز لأنها مبنية على الروبي. إذاً السيئة موجودة في الريلز الذي بني عليه التويتر.

كنت أعرف أن الريلز فيها هذه المشكلة وعندما قرأت هذه المقابلة تأكدت من المعلومة وحصلت على معلومات غيرها عن سيئات الريلز، طبعاً أنا لست ضد الريلز وبرمجت بها لفترة (قبل الكيك) وأعجبت بها لكن الحذر واجب، وعند ظهور الكيك انصب اهتمامي عليه خاصة وأن بنيته وميزاته تشبه الريلز كثيراً.

ملخص المقابلة وبتصرف:

عندما بدأت بتطوير الويب، بدأت التطوير بالـ PHP كحال كل مبرمج وصنعت بعض السكربتات مع صديقي بالروبي وعند ظهور الريلز سررت جداً بوجود أداة مكتوبة بالروبي لتطوير الويب.

طورت العديد من مواقع المنظمات الغير ربحية ومواقع الحملات الانتخابية وعندما بدأ التويتر بالظهور في 2006 طلبوا مطورين للعمل فتقدمت إليهم وعملت في البداية كمتعاقد (ليس موظفاً أي العمل على مهمات تشبه المبرمج الحر قليلاً)، ثم تم قبولي كموظف دائم في فريق التويتر.

من المعروف الآن أن التويتر هو أكبر موقع بالعالم مكتوب بالريلز وهذا ما أجبرنا على العمل في مشاكل الثباتية (scaling)، وكان الحل الوحيد لزيادة الطلبات على التويتر وبالتالي زيادة مشاكل الثباتية هي بإضافة المزيد من المخدمات وبالطبع العديد من المخدمات تعني العديد من الطلبات على قاعدة البيانات الوحيدة لأن الريلز لاتدعم تعددية قواعد البيانات وكان الحل لهذا بالتخزين المؤقت (caching) لكل شيء يطلب من قاعدة البيانات ووضع هذه الكاش في مخدمات قراءة فقط (read-only).

كل هذا فرض علينا المزيد من الكلفة والوقت الضائع لجلب الطلبات، وهذا العقاب هو مصير كل مطور بالريلز وعندما تصل لهذه المرحلة من كثرة الطلبات عليك بأحد الحلين أو كلاهما: استعمال كل الأدوات الممكنة لتحسين الريلز (RJS, ActiveRecord, ActiveSupport) والحل الآخر هو بنقل الأجزاء التي يحدث فيها بطىء (أي الأكثر تلقياً للطلبات) إلى لغة آخرى سريعة (C, PHP, Python).

ويجب أن لايغيب عن بال أي مطور بأن الروبي بطيئة. العديد من المبرمجين يعملون الآن على تحسين سرعتها ولكنها في الوقت الحالي بطيئة، فعندما تطور تطبيق كبير ستلاحظ بأن سرعته بالبايثون مثلاً أسرع من الروبي.

كل المطورين في التويتر هم من عشاق الروبي ولكن نقولها وبصراحة بأن الروبي بطيئة.

ثم تكلم أليكس عن الميزات القادمة في تويتر ومنها “المجموعات” التي تطلب بشكل كبير من قبل مستخدمي تويتر.

أهداف هذه التدوينة:

  • استغلال الفرصة، الخبرة (أهم شيء وإلا صرف من التعاقد ولم يوظف) والحظ في تقدمه للعمل مع تويتر
  • نظرة على التويتر من الداخل وبنيته
  • سيئة الروبي والريلز وهي البطىء خصوصاً في التطبيقات الكبيرة
  • التعرف على بعض الطرق لتحسين سرعة وأداء الريلز
شارك هذه التدوينة:
إضافة 'التويتر من الداخل وسيئة الروبي' إلى Del.icio.usإضافة 'التويتر من الداخل وسيئة الروبي' إلى diggإضافة 'التويتر من الداخل وسيئة الروبي' إلى Technoratiإضافة 'التويتر من الداخل وسيئة الروبي' إلى Stumble Uponإضافة 'التويتر من الداخل وسيئة الروبي' إلى Google Bookmarksإضافة 'التويتر من الداخل وسيئة الروبي' إلى FaceBookإضافة 'التويتر من الداخل وسيئة الروبي' إلى MySpaceإضافة 'التويتر من الداخل وسيئة الروبي' إلى Twitterإضافة 'التويتر من الداخل وسيئة الروبي' إلى FriendFeed
الوسوم: برمجة, نصائح
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • متابعة لتوليفة تقانات الويب
    • تنقيح الكود باستخدام PDT + Xdebug
    • نصائح php الجزء الثالث
    • كيف تحسن مستوى فريقك البرمجي
    • محررات الـ PHP المتقدمة

13 تعليق في “التويتر من الداخل وسيئة الروبي”

  1. Ahmed Mahmoud: October 3, 2008 - الجمعة 04 شوال 1429 في 7:10 ص

    التويتر كان سبب من اسباب توجيه الانتقادات للريلز نظرا لانه يعتبر من اكثر المواقع الكبيرة اعطالاً و قيل ان السبب في ذلك هو الريلز علي اي حال اعتقد انه حين بُرمج التوتير لم يكون في حسبان المطورين انه سيكون بهذه الشهرة و لكن لكل تقنية و لها اوجه قصورها و بالفعل الروبي اتخذت عدة خطوات للامام لتحسين سرعتها و الامر كله مسألة وقت و اعتقد ان في الاصدار الثاني من الروبي Ruby 2.0 ستكون الروبي اكثر من رائعة و الريلز مبنية علي الاصدار 1.8.6 من الروبي ايضا في اعتقادي الشخصي ان سبب اعطال او بطء التويتر يرجع للريلز بل الي خوادمهم في المقام الاول و مبرمجيهم في المقام الثاني ثم الروبي في اخر الامر و تخميني هذا نظراُ لانه معروف ان اصحاب التويتر هم عالم “غلابة”
    :)
    اللهم لا تجعلنا من اصحاب التويتر


  2. خالد: October 3, 2008 - الجمعة 04 شوال 1429 في 7:16 ص

    تعليقك يدل على فهمك العميق للروبي، وأنا انتظر بشوق النسخة الثانية منها.
    بالنسبة لرأيك بالمطورين فلا أعتقد أنهم غلابة (مابعرف من وين جبت هالمعلومة!) وثانياً أكيد خوادمهم ليست استضافة مشتركة :D يعني العتب بالمقام الأول على الروبي ومن ثم على التجهيزات.


  3. Ahmed Mahmoud: October 3, 2008 - الجمعة 04 شوال 1429 في 7:35 ص

    هههههههههههههه مش لدرجة استضافة مشتركة و لكن الامر و ما فية لو انك تتابع اخبار التويتر ستجدهم قد قاموا بالغاء خدمات الرسائل القصيرة لكل الدول ما عدا امريكا و كندا و عللوا ذلك بان لا يوجد “مصاري” لتغطية التكاليف و انهم عالم “غلابة” و انا كنت اقصد انهم غلابة من الناحية المادية
    و ان كنت اري انه لا يصح ان نلقي باللوم علي الاداة المستخدمة في البرمجة لان هذا يعد قصورا فينا ايضا
    ثانيا لو تري جداول Downtime للمواقع الكبيرة و عدد الساعات التي تكون فيها المواقع Offline ستذهل بنتائج التوتير فلو قارنت موقعي الذي يستخدم “استضافة مشتركة” بالتوتير ستجده افضل منه
    اعتقد ان التويتر يحتاج لان يباع لشركة كبيرة كجوجل مثلا و ستكون اضافة رائعة لخدمات جوجل.
    و صدقني لست ضليع بالروبي كما تظن و لكني احاول ان اكون
    :)


  4. خالد: October 3, 2008 - الجمعة 04 شوال 1429 في 11:49 ص

    من الناحية المادية فمعك حق وقد ذكرت ذلك بتدوينة سابقة بأن هذه من سيئات التويتر، ولكن ليس لدرجة أن يضحوا بالأداء في مقابل المادة. أي بالتأكيد لديهم فريق من أفضل المبرمجين وهذا ماتلاحظه في الموقع الخاص بالتطوير بهم.
    وبالفعل أكثر من مرة شاهدت توقف الموقع، والسبب الأول هو الروبي، وأيضاً مستغرب لحد الآن لماذا لم تشتريه الشركات الكبيرة. غالباً عرض عليهم هذا ولكنهم ربما ينتظروا أن تزداد قيمته السوقية بطرح أسهم الشركة للبيع ربما!


  5. محمد سعيد احجيوج: October 3, 2008 - الجمعة 04 شوال 1429 في 1:57 م

    عادي، لكل لغة برمجية سلبيات كما لها إجابياتها الخاصة. طريقة البرمجة والتنفيذ هي ما تحدد ثبات وقابلية التوسع لكل برنامج. ولا تنسوا هنا أن كل خدمات 37signals مبرمجة بالريلز، وهي خدمات تجارية يتجاوز مستخدموها المئات من الآلاف.

    مشكلة تويتر كما إعترف أحد مبرمجيها ذات وقت هو البنية الداخلية للتويتر. فهم لم يتوقعوا النجاح الذي سيصلون إليه ولم يكن هناك تخطيط مناسب لطريقة التنفيذ الأفضل. صحيح أن الريلز بطيئة لكن هناك الكثير من الحلول التي تسرع برمجيات الريلز. وتويتر نفسه يمكنه أن يصبح أسرع وأقل تكلفة لو أعيد برمجته من الصفر. لكن هذا قد يكون مستحيلا إذا لم يكن تصميم قاعدة البيانات يسمح بذلك.


  6. خالد: October 3, 2008 - الجمعة 04 شوال 1429 في 2:48 م

    تماما أخي سعيد ولكن تبقى بطيئة وأبطىء من اللغات الحالية بكثير. هذا الكلام لم أخذه من التويتر فقط ولكن أيضاً من صديق لي (مطور) يستخدم الريلز في موقع مشهور ويأتيه أكثر من 100 ألف زيارة شهرياً. قال لي بأن مشكلتهم الكبرى هي الثباتية وسببها البطىء لديهم حالياً 4 مخدمات ومع ذلك يواجهون مشاكل في انقطاع الموقع عن العمل دائماً وهذا لايحدث إذا استخدمت PHP أو Python.
    ولانعرف جماعة 37 سيغنالز كم مخدم لديهم بالخدمة! ممكن عندهم عدد كبير حتى يخدموا مستخدميهم ولكن بالتأكيد عدد المخدمات سيخف بلغة غيرها.
    موقع آخر مشهور أزوره باستمرار ومبرمج بالريلز وغالباً أجده خارج الخدمة (out of service)!! هذا الشيء لايحدث مع المواقع المطورة بال PHP أو ASP حتى.
    الشيء الأهم لبطىء الروبي هو أنها تستخدم معالجة وحيدة (Single Process)، فعلى الرغم من وجود multi-threading فيها ولكن هذه multi-threading عبارة عن وهم لا أكثر!
    راجعوا هذا الموضوع بتمعن:
    http://rubylearning.com/satishtalim/ruby_threads.html

    ولاحظوا جملة:
    Finally, if your machine has more than one processor, Ruby threads won’t take advantage of that fact – because they run in one process, and in a single native thread, they are constrained to run on one processor at a time.

    يعني تعددية المهام مجرد وهم وبالحقيقة إذا كان لديك أكثر من معالج فلن تستفيد منهم! فتعددية المهام في الروبي هي مجرد تشغيل للمهام بنفس الوقت ولكن كل مهمة عليها أن تنتظر المهمات التي قبلها ولاتستفيد من وجود عدة معالجات أو معالجات ثنائية أو رباعية النواة!

    الخبر المفرح هو دعم الروبي 1.9 لتعددية المهام فعلياً، ففي مقابلة مع مؤسس الروبي ومؤسس YARV (اليارف عبارة عن VM للروبي) تحدثوا عن هذا (لم أجرب الروبي 1.9):
    http://www.infoq.com/news/2007/05/ruby-threading-futures

    كلمة أخيرة، المعالجة الوحيدة عيب كبير باللغة وبالتأكيد لم يكن ببال مبتكر الروبي أن تنتشر هذا الانتشار الكبير ولم يكن بباله أن تتطور المعالجات لهذه الدرجة يصبح هناك المعالجات ثنائية النواة ورباعية النواة، ولكن الآن تتخذ خطوات جدية لسد هذا العيب ومنها YARV.

    لم أخض كثيراً في الروبي وتعددية المهام فيها لذا أرجو من المختصين بهذا أن يشاركونا رأيهم.


  7. محمد سعيد احجيوج: October 3, 2008 - الجمعة 04 شوال 1429 في 3:09 م

    فعلا، تعددية المهمام هي أبرز نقطة ضعف في الروبي (والريلز بالتبعية). الإصدار 1.9 من روبي يقدم الحل. والريلز كذلك ستقدم الحل في الإصدار القادم 2.2 أو الذي بعده. لكم كما قلت، هناك الكثير من الحلول، وكل يوم تقريبا يظهر جديد، لدعم تعدد المهام في الريلز. لكنها حلول تجعل من عملية إستضافة الريلز كابوسا حقيقيا للمطورين. أحدث هذه الحلول هو Passenger أو كما يعرف بـ mod_rails. يعتبر حلا واعدا وسيهل كثيرا من عملية الإستضافة والتقليل من إستنزاف الموارد.

    بالنسبة لـ 37signals كان لديهم 30 سيرفرا مع نهاية 2007. ونظرا لظهور حلول أفضل لإستضافة الريلز فقد كانوا يخططون لخفظ عدد السيرفرات إلى 16 فقط. لا أدري إن كانوا قد نجحوا.


  8. Ahmed Mahmoud: October 3, 2008 - الجمعة 04 شوال 1429 في 5:10 م

    جيمس ادوراد في رده علي سؤال
    Keith Brady, Australia>> What are the pros and cons of Ruby that are being discussed in the development community and what is your opinion on that?

    James>> You’ll hear a lot of people say, “Ruby is slow.”

    That can be true, but it doesn’t have to be. I just gave a presentation at the LSRC that showed multiple ways to get Ruby to do work in fractions of a second.

    My opinion on the speed rumors is that you shouldn’t believe everything you hear. I’m sure there are tasks Ruby is too slow for, but there are also a surprising number of tasks where you can make it go fast enough.
    و هذا ما يمثل وجهه النظر السائدة … نعم الروبي بطيئة في بعض الاشياء و لكن من الممكن جعلها اسرع لو كان المبرمج متمرسا
    و لو زرت صفحة الروبي في الويكبيديا ستجد ما المشكلات الحالية في الروبي و المتوقع حلها قريبا.


  9. Khaled: October 4, 2008 - السبت 05 شوال 1429 في 12:16 ص

    @محمد: يمكن عندهم 37 سيرفر بما أن اسمهم 37 سيغنالز :D
    @أحمد: شكراً لك … إضافة جميلة


  10. bassem: October 6, 2008 - الاثنين 07 شوال 1429 في 1:06 م

    شو هو التويتر
    بالنسبة لتعددية المهام في الروبي
    هل يوجد تعددية مهام في ال php


  11. خالد: October 6, 2008 - الاثنين 07 شوال 1429 في 5:25 م

    هذه تدوينة سابقة عن التويتر:
    http://dev.holooli.com/2008/09/20/%d8%aa%d9%88%d9%8a%d8%aa%d8%b1-%d9%88%d8%a7%d9%84%d8%b4%d8%a8%d9%83%d8%a7%d8%aa-%d8%a7%d9%84%d8%a7%d8%ac%d8%aa%d9%85%d8%a7%d8%b9%d9%8a%d8%a9/

    تعددية المهام في PHP تأتي من Apache حيث ينفذ العديد من المهام بنفس الوقت ولوحده أي لاحاجة لأن تكتب تطبيق متعدد المهام فهو بطبيعته سيكون كذلك


  12. bassem: October 7, 2008 - الثلاثاء 08 شوال 1429 في 12:06 م

    خالد عن عم اسمع كتير عن لغة الروبي
    و حابب اتعلمها
    ممكن تعطينا شرح عنها و بعض المصادر


  13. خالد: October 8, 2008 - الأربعاء 09 شوال 1429 في 3:46 ص

    إن شاء الله فقط انتظر كم يوم


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • أفضل الأدوات لرفع الملفات
  • تنظيم الوقت البرمجي
  • مقدمة في CakePHP
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • تصميم قاعدة البيانات
  • مواقع عربية بالدروبال
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار أمازون إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك اللغة العربية برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مشاريع مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • 2008-2012 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً

    Switch to our mobile site