تسريع Ruby كيف أصبحت أوقات تثبيت الحزمة لدينا أسرع بمقدار 12 ضعفًا

في عام 2014، قرر صمويل جيدينز، وهو طالب يبلغ من العمر 19 عامًا في جامعة شيكاغو، تأجيل العودة إلى الكلية في سنته الثانية. عاقدة العزم على معالجة النقص الصارخ في CocoaPods ، وهي أداة مفتوحة المصدر لإدارة وتثبيت مكتبات الطرف الثالث لتطبيقات iOS ، تقدم Sam بطلب للحصول على منحة صغيرة للتركيز على هذه المشكلة الصعبة. عندما علم أن اقتراحه قد تم قبوله، قفز إلى هذه الفرصة التي تحدث مرة واحدة في العمر وانتقل إلى سان فرانسيسكو للعام التالي، قائلاً وداعًا مؤقتًا للعديد من أصدقائه الجدد في الكلية.

نظرًا لأن جهود Sam الأولية ركزت على وظيفة النقل من Bundler ، وهي أداة لتثبيت مكتبات Ruby لجهات خارجية، فقد شارك في المساعدة في توسيع نطاق RubyGems.org، الموقع الأساسي لاستضافة كود Ruby مفتوح المصدر والذي يخدم حاليًا أكثر من 15 مليار طلب يوميًا ويخدم أكثر من 176000 مكتبة روبي. يرجع ذلك جزئيًا إلى شعبية إطار عمل الويب Rails المعتمد في العديد من الشركات بما في ذلك Square، أصبح Bundler بطيئًا بشكل متزايد في تنزيل المعلومات الضرورية للقيام بعمله. أضاف فريق RubyGems واجهة برمجة تطبيقات مخصصة للاستعلام عن هذه المعلومات، ولكن هذا التغيير شدد على تحميل وحدة المعالجة المركزية وقاعدة البيانات لدرجة أن الخوادم لم تعد قادرة على التعامل مع حركة المرور الواردة بعد الآن.

في عام 2015، ابتكر فريق Bundler ، بقيادة أندريه أركو، نهجًا جديدًا. قرر الفريق أن Bundler لن يعتمد بعد الآن على واجهة برمجة تطبيقات باهظة الثمن من الناحية الحسابية مستضافة حصريًا في مركز بيانات أمازون في الساحل الشرقي أو تنسيق تسلسل مخصص غير آمن. بدلاً من ذلك، سيتم تخزين الكثير من هذه البيانات مؤقتًا في ملف نصي للإلحاق فقط يتم توزيعه جغرافيًا من خلال شبكة توصيل المحتوى (CDN)، مما يجعلها أسرع وأكثر أمانًا. تم تنفيذ الجزء الأكبر من هذه الميزة، والتي أصبحت تُعرف باسم تنسيق الفهرس المضغوط، على مدار عام. تم بناء نموذج أولي بواسطة André مع التنفيذ الكامل الذي بناه Felipe Tanus كمشروع صيفي تحت إشراف Sam. تحرك موقع RubyGems بسرعة لاعتماد التنسيق وإصدار جديد من Bundler (v1.12) كما انتقلت إلى دعمها.

بالتوازي مع ذلك، تم إطلاق Gemstash، وهو مشروع مفتوح المصدر مكن الشركات من تخزين مكتبات Ruby الخاصة بها، في عام 2015. كما تضمن Gemstash ميزة التخزين المؤقت المرآة لتقليل حمل المرور على RubyGems.org. في Square ، بدأنا تشغيل إصدار مستضاف ذاتيًا من Gemstash في مراكز البيانات الخاصة بنا في عام 2016. على الرغم من أن Gemstash يفتقر إلى دعم الفهارس المدمجة (مشكلة GitHub ) ، لم تكن هذه مشكلة على مدار السنوات السبع الماضية حتى بدأ تحديث Bundler الأخير الذي يتطلب استخدامه.

لهذا السبب، أعطينا الأولوية لترحيل جواهر Ruby الخاصة بنا إلى حل يدعمه البائعين والذي تضمن دعم الفهارس المدمجة. نتيجة لهذا الترحيل، قمنا بقياس تثبيت Bundler لقاعدة كود Android Point of Sale بحيث يستغرق 20 ثانية بدلاً من 4 دقائق، وهو تحسن بمقدار 12 ضعفًا. كما يوفر فائدة كبيرة لتنزيل المكتبات عبر CDN لتسريع التنزيلات لمطورينا الموزعين حول العالم.

كانت إحدى العقبات غير المتوقعة التي اكتشفناها في وقت متأخر من عملية الترحيل هي فشل بعض وظائف CI في التثبيت بشكل صحيح بسبب عدم تطابق المجموع الاختباري عند استدعاء Bundler. أثناء التحقيق أكثر، حددنا خطأ في تطبيق الفهرس المضغوط كان يفشل في حساب الأنواع المختلفة من مترجمي Ruby المتاحين. نقلنا النتائج التي توصلنا إليها إلى البائع وتوصلنا إلى حل بديل لمواصلة الترحيل.

بعد قضاء إجازة لمدة عام للتركيز على العمل مفتوح المصدر، عاد سام إلى جامعة شيكاغو في عام 2015. تخرج من الكلية في عام 2017 وانضم إلى Square كعضو في فريق iOS Mobile Developer Experience ، حيث قاد قرار تحسين أوقات البناء من خلال الهجرة إلى بازل. بصفته عضوًا في مجتمع Ruby مفتوح المصدر، نشر أيضًا إعلانًا حديثًا حول إهمال RubyGems API القادم، تتويجًا لأكثر من 7 سنوات من العمل لجعل عملية التثبيت سريعة وموثوقة. نحن مدينون بشكر خاص ليس فقط له ولكن أيضًا لأعضاء مجتمع Ruby مفتوح المصدر الذين ساعدوا في إجراء هذا التغيير القادم في 24 مايو.

المصدر: developer

قد يهمك:

ربح المال من الانترنت

ما هي أفضل استضافة مواقع

متخصص سيو

ترجمة هولندي عربي

افضل شركات الاستضافة

تحسين محركات البحث SEO 2023

قوالب ووردبريس عربية

أفضل اضافات ووردبريس

أنت تستخدم إضافة Adblock

يعتمد موقع انشاء على الاعلانات كمصدر لدعم الموقع، يجب عليك ايقاف تشغيل حاجب الاعلانات لمشاهدة المحتوي