परफ़ॉर्मेंस की ऑटोमेटेड टेस्टिंग और मॉनिटरिंग सिस्टम बनाकर, Lowe's की साइट स्पीड टीम, परफ़ॉर्मेंस बजट के हिसाब से, पूल किए गए अनुरोधों की जांच करती है. साथ ही, प्रोडक्शन में जाने से पहले परफ़ॉर्मेंस में गिरावट को रोकती है.
Lowe's, घर के रखरखाव से जुड़ी चीज़ों का खुदरा स्टोर है. इसकी सालाना आय करीब 90 अरब डॉलर है. इसमें करीब 2,200 स्टोर हैं और 3,00,000 से ज़्यादा लोग काम करते हैं. Lowe's की साइट स्पीड टीम ने अपने-आप टेस्ट करने और मॉनिटर करने वाला सिस्टम बनाया. इससे, प्रोडक्शन में डिप्लॉय करने से परफ़ॉर्मेंस में गिरावट आने से रोका जा सका. साथ ही, वेबसाइट की परफ़ॉर्मेंस को बेहतर बनाया जा सका और इसे रीटेल की टॉप साइटों में शामिल किया जा सका.
समस्या
साइट की स्पीड से जुड़ी टीम का लक्ष्य, पेज लोड होने की परफ़ॉर्मेंस के मामले में Lowe's की साइट को सबसे तेज़ ई-कॉमर्स साइटों में से एक बनाना है. अपने-आप टेस्ट करने और मॉनिटर करने वाला सिस्टम बनाने से पहले, Lowe's की वेबसाइट के डेवलपर, प्री-प्रोडक्शन एनवायरमेंट में परफ़ॉर्मेंस को अपने-आप मेज़र नहीं कर पा रहे थे. मौजूदा टूल सिर्फ़ प्रोडक्शन एनवायरमेंट में टेस्ट करते हैं. इस वजह से, प्रोडक्शन में खराब बिल्ड शामिल हो गए, जिससे उपयोगकर्ताओं को खराब अनुभव मिला. ये खराब बिल्ड तब तक प्रोडक्शन में रहेंगे, जब तक साइट की स्पीड की जांच करने वाली टीम को इनकी जानकारी नहीं मिल जाती और लेखक इन्हें वापस नहीं ले लेता.
समाधान
साइट की स्पीड से जुड़ी टीम ने, प्री-प्रोडक्शन एनवायरमेंट के लिए, परफ़ॉर्मेंस की ऑटोमेटेड टेस्टिंग और निगरानी करने वाला सिस्टम बनाने के लिए, ओपन सोर्स टूल का इस्तेमाल किया. यह सिस्टम हर पुल रिक्वेस्ट (पीआर) की परफ़ॉर्मेंस का आकलन करता है. साथ ही, अगर पीआर, साइट स्पीड टीम के परफ़ॉर्मेंस बजट और मेट्रिक की शर्तों को पूरा नहीं करता है, तो उसे शिपिंग से प्रोडक्शन में जाने से रोक दिया जाता है. यह सिस्टम, एसईओ और अमेरिकन्स विद डिसएबिलिटीज़ ऐक्ट (एडीए) का पालन करने की स्थिति का भी आकलन करता है.
असर
एक टीम के 102 बिल्ड को 16 हफ़्तों में डिप्लॉय करने के दौरान, परफ़ॉर्मेंस की ऑटोमेटेड टेस्टिंग और मॉनिटरिंग सिस्टम की मदद से, 32 बिल्ड को प्रोडक्शन में जाने से रोका गया. इन बिल्ड की परफ़ॉर्मेंस अच्छी नहीं थी.
पहले, साइट की स्पीड से जुड़ी टीम को डेवलपर को यह बताने में तीन से पांच दिन लगते थे कि उन्होंने परफ़ॉर्मेंस में गिरावट को प्रोडक्शन में शिप कर दिया है. अब, यह सिस्टम, प्री-प्रोडक्शन एनवायरमेंट में पुल रिक्वेस्ट सबमिट करने के पांच मिनट बाद, डेवलपर को परफ़ॉर्मेंस से जुड़ी समस्याओं के बारे में अपने-आप बता देता है.
समय के साथ कोड की क्वालिटी बेहतर हो रही है. इस बात का पता, परफ़ॉर्मेंस में गिरावट की वजह से फ़्लैग किए गए कम पुल रिक्वेस्ट से चलता है. साइट की स्पीड को बेहतर बनाने वाली टीम, साइट की क्वालिटी को लगातार बेहतर बनाने के लिए, धीरे-धीरे मैनेजमेंट बजट को कम कर रही है.
आम तौर पर, समस्या वाले कोड का मालिकाना हक साफ़ तौर पर होने से, इंजीनियरिंग के माहौल में बदलाव आया है. समस्याओं को ठीक करने के लिए, टीम को ज़रूरत पड़ने पर ही बदलाव करने की ज़रूरत नहीं पड़ती. ऐसा इसलिए, क्योंकि यह कभी साफ़ तौर पर पता नहीं चलता कि समस्याएं किसने शुरू की हैं. टीम, समस्या वाले कोड के मालिकाना हक को निष्पक्ष तरीके से तय करके, पहले से ही ऑप्टिमाइज़ेशन कर सकती है.
लागू करना
साइट स्पीड को मैनेज करने वाले (एसएसजी) ऐप्लिकेशन का मुख्य हिस्सा Lighthouse CI है. SSG ऐप्लिकेशन, हर पुलबैक अनुरोध के पेज की परफ़ॉर्मेंस की पुष्टि करने और उसका ऑडिट करने के लिए, लाइटहाउस का इस्तेमाल करता है.

अगर साइट की स्पीड टीम के तय किए गए परफ़ॉर्मेंस बजट और मेट्रिक टारगेट तक नहीं पहुंचा जाता है, तो एसएसजी ऐप्लिकेशन की वजह से बिल्ड पूरा नहीं होता. यह न सिर्फ़ लोडिंग की परफ़ॉर्मेंस को बेहतर बनाता है, बल्कि एसईओ, PWA, और सुलभता को भी बेहतर बनाता है. यह लेखकों, समीक्षकों, और एसआरई टीमों को तुरंत स्टेटस की जानकारी दे सकता है. ज़रूरत पड़ने पर, इसे जांच को बायपास करने के लिए भी कॉन्फ़िगर किया जा सकता है.
ऑटोमेटेड स्पीड गवर्नेेंस (एएसजी) प्रोसेस फ़्लो
Spinnaker
शुरुआत का पॉइंट. डेवलपर, अपने कोड को प्री-प्रोडक्शन एनवायरमेंट में मर्ज करता है.
- सीडीएन ऐसेट की मदद से, प्री-प्रोडक्शन एनवायरमेंट डिप्लॉय करें.
- देखें कि डिप्लॉयमेंट पूरा हो गया है या नहीं.
- ASG ऐप्लिकेशन बनाना शुरू करने के लिए, Docker कंटेनर चलाएं या डिप्लॉयमेंट के दौरान होने वाली गड़बड़ी की सूचना भेजें.
Jenkins और Lighthouse
- Jenkins की मदद से ASG ऐप्लिकेशन बनाएं.
- कस्टम Docker कंटेनर चलाएं, जिसमें Chrome और Lighthouse इंस्टॉल हो.
SSG ऐप्लिकेशन से
lighthouserc.json
खींचें औरlhci autorun --collect-url=https://example.com
चलाएं.
Jenkins और SSG ऐप्लिकेशन
- lhci से
assertion-results.json
निकालें और इसकी तुलनाbudgets.json
में पहले से तय बजट से करें. आउटपुट को टेक्स्ट फ़ाइल के तौर पर सेव करें और आने वाले समय में तुलना करने के लिए, इसे Nexus पर अपलोड करें. - मौजूदा
assertion-results.json
की तुलना, आखिरी बार सही तरीके से बने (Nexus से डाउनलोड किए गए) बिल्ड से करें और उसे टेक्स्ट फ़ाइल के तौर पर सेव करें. - ईमेल भेजने के लिए, HTML फ़ॉर्मैट में ईमेल बनाएं. इसमें, ईमेल भेजने की प्रोसेस पूरी होने या न होने की जानकारी शामिल करें.
- Jenkins की मदद से, ईमेल को ज़रूरी डिस्ट्रिब्यूशन सूचियों पर भेजें.