ऐप्लिकेशन की स्पीड को 30% तक बढ़ाना: Zomato की ग्रोथ के लिए एक अहम फ़ैक्टर

Zomato, भारत की एक मल्टीनेशनल कंपनी है. यह रेस्टोरेंट एग्रीगेटर और फ़ूड डिलीवरी कंपनी है. यह सिर्फ़ भारत में 500 शहरों में ग्राहकों को सेवाएं देती है. इसकी सेवाओं का इस्तेमाल करने वाले खरीदारों की संख्या 4.3 करोड़ से ज़्यादा है. साथ ही, हर दिन औसतन 15 लाख से ज़्यादा ऑर्डर किए जाते हैं. इसलिए, यह देश में खाना ऑर्डर करने और डिलीवर करने वाली सबसे लोकप्रिय सेवाओं में से एक है. इसका यह भी मतलब है कि खरीदार अलग-अलग तरह के डिवाइसों का इस्तेमाल करते हैं और उनके पास अलग-अलग नेटवर्क उपलब्ध होते हैं. तेज़ी से डिलीवरी के साथ-साथ, ऐप्लिकेशन पर बेहतरीन अनुभव देना भी ज़रूरी है.

उपयोगकर्ता चाहते हैं कि ऐप्लिकेशन तेज़ी से खुले और रिस्पॉन्सिव हो. इस मेट्रिक को बेहतर बनाने से, ऐप्लिकेशन की परफ़ॉर्मेंस पर सीधा असर पड़ता है. साथ ही, इससे ज़्यादा ऑर्डर पूरे किए जा सकते हैं. इससे Zomato की रणनीति को भी मदद मिलती है. जैसे, नए बाज़ारों में कारोबार बढ़ाना और कम से लेकर मध्यम रेंज वाले डिवाइसों पर बेहतर अनुभव देना. इससे Zomato को अगले एक अरब उपयोगकर्ताओं को जोड़ने में मदद मिलती है. ऐप्लिकेशन खोलने के समय से भी फ़नल के साइज़ का अनुमान लगाया जा सकता है, क्योंकि उपयोगकर्ता सेल्स फ़नल में आगे बढ़ते हैं.

साथ ही, Zomato को ऐप्लिकेशन की परफ़ॉर्मेंस पर ध्यान देने से काफ़ी फ़ायदा मिला. उदाहरण के लिए, ऐप्लिकेशन लोड होने में लगने वाले समय को 30% तक कम करने से, पहले दिन ऐप्लिकेशन इस्तेमाल करने वाले लोगों की संख्या में करीब 90% की बढ़ोतरी हुई!

चैलेंज

Zomato ने बहुत कम समय में कई नई सुविधाएं जोड़ीं और अपने प्लैटफ़ॉर्म को बेहतर बनाया. इससे ग्राहकों को काफ़ी फ़ायदा हुआ. हालांकि, इसके बाद उन्हें अपने कोडबेस और UX को ऑप्टिमाइज़ करने की ज़रूरत पड़ी. नई सुविधाएं जोड़ने के साथ-साथ, Zomato अपनी परफ़ॉर्मेंस को भी बेहतर बनाए रखना चाहता था. एक से ज़्यादा एसडीके ऐसे संसाधनों का इस्तेमाल कर रहे थे जिनकी हमेशा ज़रूरत नहीं होती थी. इसलिए, कोडबेस को बेहतर बनाने और उसे आसान बनाने की ज़रूरत थी.

इन सभी चीज़ों के पीछे, भारत के दूसरे और तीसरे टीयर के शहरों में Zomato की पहुंच का बढ़ना था. इन शहरों में, लोग आम तौर पर कम से लेकर मिड-टियर वाले डिवाइस इस्तेमाल करते हैं. इन डिवाइसों में प्रोसेसिंग की क्षमता भी कम होती है. इन डिवाइसों को शामिल करने के बाद, टीम को यह पक्का करना था कि उपयोगकर्ताओं को वही बेहतरीन अनुभव मिले जो उन्हें महंगे डिवाइसों में मिलता था.

उन्होंने क्या किया?

Zomato ने अपने ओवरहेड का विश्लेषण करने के लिए, एक आसान रूब्रिक का इस्तेमाल किया. इससे यह पता लगाया जा सकता है कि डेवलपमेंट टीम की कोशिशों के मुकाबले, कौनसा समाधान सबसे ज़्यादा रिटर्न दे सकता है. इस रूब्रिक का इस्तेमाल करके, टीम ने चार महीने तक ऑप्टिमाइज़ेशन और परफ़ॉर्मेंस को बेहतर बनाने का काम किया.

पहला चरण, सिस्टम ट्रेस की जांच करके समस्याओं का पता लगाना था. इसके बाद, समय के हिसाब से विश्लेषण करना और समस्याओं को प्राथमिकता के हिसाब से ठीक करना था. Perfetto, Android प्रोसेस का विश्लेषण करने, उनकी प्रोफ़ाइल बनाने, और उन्हें ट्रेस करने के लिए सबसे सही टूल है. Zomato ने इस टूल का इस्तेमाल करके, ऐप्लिकेशन शुरू होने के दौरान शुरू किए गए सभी SDK को ट्रैक किया. साथ ही, उन SDK को हाइलाइट किया जिन्हें हटाया जा सकता है या बाद में लोड किया जा सकता है.

लेगसी एसडीके टूल और इस्तेमाल नहीं की जा रही तीसरे पक्ष की लाइब्रेरी को हटाना हमारी पहली प्राथमिकता थी. ऐसा इसलिए, क्योंकि इसमें कम मेहनत लगती है और ज़्यादा फ़ायदा मिलता है. इस तरीके से, Zomato को ऐप्लिकेशन के स्टार्टअप टाइम में 20% की बचत करने में मदद मिली.

तीसरे पक्ष की कई लाइब्रेरी, ऐप्लिकेशन शुरू होने पर कॉन्टेंट प्रोवाइडर का इस्तेमाल करती हैं. इससे ऐप्लिकेशन के शुरू होने में लगने वाला समय बढ़ जाता है. Zomato, लॉगिन के लिए Facebook SDK का इस्तेमाल करता है. हालांकि, उपयोगकर्ता के पास लॉगिन करने के अन्य विकल्प भी होते हैं. इसलिए, स्टार्टअप के समय SDK को शुरू करना सही नहीं है. ऐप्लिकेशन स्टार्टअप लाइब्रेरी के लॉन्च होने के बाद, Zomato सिर्फ़ तब एसडीके टूल लोड करता है, जब उपयोगकर्ता Facebook से लॉगिन करने का विकल्प चुनता है. इससे उन्हें स्टार्टअप टाइम को ~6% तक कम करने में मदद मिली!

अगला चरण, व्यू के दिखने में लगने वाले समय को कम करना था. ऐसा इसलिए, क्योंकि Zomato के जटिल यूज़र इंटरफ़ेस (यूआई) स्ट्रक्चर में, व्यू को रेंडर करने और दिखाने में काफ़ी समय लग सकता है. Viewstub की मदद से, व्यू को बनाया जा सकता है. हालांकि, जब तक ज़रूरत न हो, उन्हें व्यू के क्रम में नहीं जोड़ा जा सकता. इससे ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है. View का इस्तेमाल करने के मुकाबले, ViewStub ज़्यादा असरदार होते हैं. GONE पर सेट करें. ऐसा इसलिए, क्योंकि अगर व्यू GONE पर सेट नहीं है, तो वह मेमोरी और सीपीयू का इस्तेमाल करता रहेगा. Zomato ने लॉगिन ऐक्टिविटी में, व्यू हैरारकी को फ़्लैट कर दिया है. साथ ही, व्यूस्टब के साथ लेआउट को मर्ज कर दिया है. इन बदलावों से, महंगाई के समय में 7% की काफ़ी कमी आई.

Android प्रोफ़ाइलर की मदद से, मेमोरी के इस्तेमाल को ऑप्टिमाइज़ करने में मदद मिली. इसकी वजह यह है कि यह सीपीयू की गतिविधि, मेमोरी, और नेटवर्क को रीयल-टाइम में ट्रैक करने की अनुमति देता है. प्रोफ़ाइलर की मदद से, उन्हें लॉकिंग की स्थितियों और मेमोरी ओवरहेड की मुख्य समस्या का पता चला. इसके बाद, उन्होंने इसे ठीक कर दिया. Zomato ने अपने कैश मेमोरी सिस्टम पर भी काम किया. इससे, मेमोरी से जुड़ी समस्याओं में 60% की गिरावट आई.

कार्रवाई पहले (सेकंड) इसके बाद (सेकंड) बेहतर बनाना
लेगसी एसडीके और इस्तेमाल न की गई तीसरे पक्ष की लाइब्रेरी हटाई गईं 4.873 3.813 21.74%
लेज़ी लोडिंग लाइब्रेरी 3.814 3.577 6.2%
लेआउट में सुधार, व्यूस्टब 2.529 2.348 7.15%

ऐप्लिकेशन के शुरू होने में लगने वाला समय = ऐप्लिकेशन के शुरू होने में लगने वाला समय + लाइब्रेरी लोड होने में लगने वाला समय + व्यू इन्फ़्लेशन में लगने वाला समय

नतीजे

Zomato की परफ़ॉर्मेंस में सुधार होने से, उन्हें बेहतर अनुभव देने में मदद मिली. यूज़र इंटरफ़ेस (यूआई) और कैश मेमोरी को बेहतर बनाया गया है. साथ ही, जंक होने की समस्या को भी कम किया गया है.

ऐप्लिकेशन से होम पेज पर जाना (ऐप्लिकेशन के आइकॉन पर क्लिक करके, पूरी तरह से लोड और इस्तेमाल किए जा सकने वाले होम पेज पर जाना) एक अहम कारोबारी मेट्रिक है. Zomato ने इसे इंटरनल तौर पर ट्रैक किया. सुधार लागू करने के बाद, उन्हें इस मेट्रिक में काफ़ी बढ़ोतरी देखने को मिली. इस अवधि के दौरान, पूरी तरह से लोड हो चुके पेज पर पहुंचने वाले खरीदारों की संख्या में करीब 20% की बढ़ोतरी हुई.

इससे, पहले दिन के ग्राहक रिटेंशन में करीब 90% की बढ़ोतरी हुई! इन सुधारों का असर, फ़ॉरवर्ड फ़नल पर भी पड़ा. होम पेज -> मेन्यू -> कार्ट -> ऑर्डर के ज़रिए होने वाले कुल ऑर्डर में ~1.5 प्रतिशत पॉइंट की बढ़ोतरी हुई. इसका मतलब है कि हर महीने करीब 6 लाख ऑर्डर बढ़े.

Firebase परफ़ॉर्मेंस की कोल्ड स्टार्टअप मेट्रिक के मुताबिक, ऐप्लिकेशन के कोल्ड स्टार्टअप टाइम में औसतन 25% का सुधार हुआ. वहीं, कम/मिड रेंज वाले डिवाइसों के लिए, ऐप्लिकेशन के कोल्ड स्टार्टअप टाइम में 30% तक का सुधार हुआ.

ऐप्लिकेशन के चालू होने में लगने वाला समय, एक अहम मेट्रिक है. इससे उपयोगकर्ता की धारणा पर असर पड़ता है. परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए किए गए प्रयासों से, कारोबार पर भी काफ़ी असर पड़ सकता है.

“Zomato में, खरीदारों को बेहतरीन अनुभव देना और इस दिशा में काम करना हमेशा से हमारी विचारधारा का मुख्य हिस्सा रहा है. हमारा मानना है कि परफ़ॉर्मेंस एक अहम फ़ैक्टर है. इसलिए, हमारी टीम ने Google के डेवलपर टूल का इस्तेमाल करके, ऐप्लिकेशन लोड होने में लगने वाले समय को कम करने के लिए इंजीनियरिंग के क्षेत्र में बेहतर काम किया. इससे हमें रीयल टाइम में अच्छे नतीजे मिले. हमें उम्मीद है कि इससे हम भारत में ऑनलाइन ऑर्डर करने की ज़रूरतों को पूरा करने के लिए, बहुत तेज़ी से काम करने वाला ऐप्लिकेशन उपलब्ध करा पाएंगे. साथ ही, हम आने वाले समय में डेवलपमेंट के लिए एक बेंचमार्क सेट कर पाएंगे.”

— सजल गुप्ता, इंजीनियरिंग मैनेजर, Zomato