من خلال إنشاء نظام آلي لاختبار الأداء ومراقبته، يختبر فريق سرعة الموقع الإلكتروني في Lowe's طلبات سحب البيانات مقابل ميزانيات الأداء، ويمنع حدوث تراجع في الأداء عند طرح الإصدارات.
Lowe's هي شركة تجزئة لبيع أدوات تحسين المنزل تبلغ قيمتها 90 مليار دولار أمريكي تقريبًا، ويدير موظفيها حوالي 2,200 متجر ويعملون مع أكثر من 300,000 موظف. من خلال إنشاء نظام اختبار ومراقبة مبرمَج يمنع تراجع الأداء عن النشر إلى مرحلة الإنتاج، تمكّن فريق سرعة الموقع الإلكتروني في Lowe's من تحسين أداء موقعه الإلكتروني، وأصبح ضمن أهم المواقع الإلكترونية للبيع بالتجزئة.
المشكلة
يهدف فريق سرعة الموقع الإلكتروني إلى جعل موقع Lowe's الإلكتروني أحد أسرع المواقع الإلكترونية للتجارة الإلكترونية من حيث أداء تحميل الصفحة. قبل إنشاء نظام الاختبار والمراقبة المبرمَج، لم يتمكّن مطوّرو الموقع الإلكتروني في Lowe's من قياس الأداء تلقائيًا في بيئات ما قبل الإنتاج. كانت الأدوات الحالية تُجري الاختبارات في بيئة الإنتاج فقط. ونتيجةً لذلك، تم طرح إصدارات غير جيدة في قناة الإصدار العلني، ما أدّى إلى تقديم تجربة سيئة للمستخدمين. ستظلّ هذه النُسخ غير المتوافقة قيد الاستخدام إلى أن يرصدها فريق سرعة الموقع الإلكتروني ويُلغيها المؤلف.
الحل
استخدَم فريق سرعة الموقع الإلكتروني أدوات مفتوحة المصدر لإنشاء نظام مبرمَج لاختبار الأداء ومراقبته في بيئات ما قبل الإنتاج. يقيس النظام أداء كل طلب سحب ويمنع طلب السحب من الانتقال إلى مرحلة الإنتاج إذا لم يستوفِ ميزانية الأداء ومعايير المقاييس التي وضعها فريق سرعة الموقع الإلكتروني. يقيس النظام أيضًا مدى الامتثال لتحسين محركات البحث وقانون الأمريكيين ذوي الإعاقة.
التأثير
من خلال عيّنة لفريق واحد على مدار 16 أسبوعًا من نشر 102 إصدار، منع نظام اختبار الأداء والمراقبة المبرمَج 32 إصدارًا ذات أداء دون المستوى من الانتقال إلى مرحلة الإنتاج.
في السابق، كان يستغرق فريق سرعة الموقع الإلكتروني من ثلاثة إلى خمسة أيام لإعلام المطوّرين بأنّهم قد طرحوا إصدارًا يتضمّن تراجعًا في الأداء، وأصبح النظام الآن يُعلم المطوّرين تلقائيًا بمشاكل الأداء بعد خمس دقائق من إرسال طلب سحب في بيئة ما قبل الإنتاج.
تتحسن جودة الرموز البرمجية بمرور الوقت، كما يتضح من انخفاض عدد طلبات سحب الرمز البرمجي التي يتم الإبلاغ عنها بسبب تراجع الأداء. يعمل فريق سرعة الموقع أيضًا على تضييق ميزانيات الإدارة تدريجيًا لتحسين جودة الموقع الإلكتروني باستمرار.
بوجهٍ عام، أدّى تحديد الملكية الواضحة للرمز البرمجي الذي يتضمّن مشاكل إلى تغيير الثقافة الهندسية. بدلاً من إجراء تصحيحات تفاعلية بدون رضى لأنّه لم يكن واضحًا أبدًا من الذي قدّم المشاكل، يمكن للفريق إجراء تحسينات استباقية مع تحديد ملكية الرمز البرمجي الذي يتضمن مشاكل بشكل موضوعي.
التنفيذ
يعتمد تطبيق Site Speed Governance (SSG) على Lighthouse CI. يستخدم تطبيق SSG أداة Lighthouse للتحقّق من أداء الصفحة لكل طلب سحب وفحصه.

يؤدي تطبيق SSG إلى تعذُّر إنشاء الإصدار في حال عدم بلوغ ميزانية الأداء وأهداف المقاييس التي حدّدها فريق سرعة الموقع الإلكتروني. ولا يفرض هذا الإجراء أداء التحميل فحسب، بل يفرض أيضًا تحسين محركات البحث وتطبيقات الويب التقدّمية وإمكانية الاستخدام. ويمكنه الإبلاغ عن الحالة على الفور للمؤلفين والمُراجعين وفرق SRE. ويمكن أيضًا ضبطه لتجاوز عمليات التحقّق عند الحاجة إلى استثناءات.
سير عمل "إدارة السرعة الآلية" (ASG)
Spinnaker
نقطة البداية دمج المطوّر لرموزه البرمجية في بيئة ما قبل الإنتاج
- يمكنك نشر بيئة ما قبل الإنتاج باستخدام مواد عرض شبكة توصيل المحتوى (CDN).
- تحقّق من نجاح عملية النشر.
- يمكنك تشغيل حاوية Docker لبدء إنشاء تطبيق ASG أو إرسال إشعار (في حال تعذّر النشر).
Jenkins وLighthouse
- أنشئ تطبيق ASG باستخدام Jenkins.
- تشغيل حاوية Docker مخصّصة تم تثبيت Chrome وLighthouse عليها
سحب
lighthouserc.json
من تطبيق SSG وتشغيلlhci autorun --collect-url=https://example.com
تطبيق Jenkins وSSG
- استخرِج
assertion-results.json
من lhci وقارِنه بالميزانيات المحدّدة مسبقًا فيbudgets.json
. احفظ الناتج كملف نصي وحمِّله إلى Nexus لإجراء مقارنات مستقبلية. - قارِن
assertion-results.json
الحالي بآخر إصدار ناجح (تم تنزيله من Nexus) واحفظه كملف نصي. - أنشئ رسالة إلكترونية بتنسيق HTML تتضمّن معلومات النجاح أو التعذّر.
- أرسِل الرسالة الإلكترونية إلى قوائم التوزيع ذات الصلة باستخدام Jenkins.