क्या आपको RedisConf का मुख्य नोट डेमो याद है? यदि हाँ, तो आप रिटेल एप्लिकेशन (RedisMart) के पर्दे के पीछे के विकास को देखकर आनंद ले सकते हैं जिसे प्रस्तुत किया गया था। यदि नहीं, तो इसे देखने का समय आ गया है। यहां वीडियो का लिंक फिर से है:
यह लेख एक श्रृंखला का पहला भाग है। यह आपको मुख्य आवश्यकताओं और RedisMart रिटेल एप्लिकेशन की आर्किटेक्चर में कुछ अंतर्दृष्टि देता है, यह देखकर कि आप एक उत्पाद कैटलॉग, एक वितरित रीयल-टाइम इन्वेंट्री, और एक AI-संचालित उत्पाद खोज कैसे लागू कर सकते हैं। आप यह भी देखेंगे कि Redis Enterprise उन सभी कार्यक्षमताओं को कैसे शक्ति प्रदान करता है।
आवश्यकताएं
सॉफ्टवेयर डेवलपमेंट में अक्सर की तरह, आइए कुछ बुनियादी आवश्यकताओं पर चर्चा करके शुरू करते हैं। यहां कुछ अनौपचारिक रूप से नोट की गई उपयोगकर्ता कहानियां हैं:
- एक रिटेल ग्राहक के रूप में:
- मैं तेज़ (<100ms एंड-टू-एंड लेटेंसी) कैटलॉग और उत्पाद विवरण तक पहुंच चाहता हूं, विभिन्न मानदंडों (जैसे, पूर्ण-पाठ, मूल्य सीमा, अन्य ग्राहकों की रेटिंग, या फेसेटेड खोज) के आधार पर उत्पादों को खोजने में सक्षम होने के द्वारा। उच्च प्रतिक्रिया समय उच्च बाउंस दरों का परिणाम होता है।
- यदि मुझे किसी उत्पाद का ब्रांड नाम नहीं पता या जो मैंने पहले खरीदा है उसके समान कुछ चाहिए, तो मैं छवि द्वारा उत्पादों की खरीदारी करना चाहूंगा। यह अच्छा होगा कि एक कैमरा मिले जो मेरे पास मौजूद से करीबी मेल खाता हो या दृष्टिगत रूप से समान हो।
- मैं एक सुरक्षित डिलीवरी चाहता हूं या ऑनलाइन खरीदने और स्टोर पर या कर्बसाइड पर पिकअप करने में सक्षम होना चाहता हूं (क्लिक एंड कलेक्ट)।
- एक इन्वेंट्री मैनेजर के रूप में:
- मुझे अपने ग्राहकों के लिए एक बेहतर पूर्ति अनुभव प्रदान करने के लिए अपनी इन्वेंट्री का एक सटीक, रीयल-टाइम दृश्य चाहिए।
- मैं उच्च-मांग वाली वस्तुओं को स्टॉक में रखने और धीमी गति से चलने वाली वस्तुओं के स्टॉक को कम करने के लिए अपनी इन्वेंट्री को अनुकूलित करना चाहता हूं।
- मुझे विभिन्न दुकानों और/या पूर्ति केंद्रों में इन्वेंट्री का एक निकट रीयल-टाइम दृश्य चाहिए ताकि स्टॉक को अनुकूलित किया जा सके।
आर्किटेक्चर
अब जब हम आवश्यकताओं को जानते हैं, तो मुझे यह बताने दें कि Redis कैसे मदद करने में सक्षम है:
- RediSearch संख्यात्मक फिल्टर, पूर्ण-पाठ खोज, जियो-इंडेक्सिंग, स्कोरिंग और एग्रीगेशन के साथ समृद्ध उत्पाद खोज को सक्षम बनाता है।
- Redis Enterprise की Active-Active सुविधा बॉक्स से बाहर जियो-रिप्लिकेटेड रीयल-टाइम अपडेट प्रदान करती है।
- RedisAI, RedisGears, और RediSearch का उपयोग रीयल-टाइम अनुमान और वेक्टर-समानता खोज के लिए डेटाबेस-एकीकृत मशीन-लर्निंग पाइपलाइन बनाने के लिए किया जाता है।
वहां से, निम्नलिखित डिजाइन की कल्पना करना बहुत कठिन नहीं था:
नीले बॉक्स सेवाओं का प्रतिनिधित्व करते हैं। लाल बॉक्स उन सेवाओं द्वारा उपयोग किए जाने वाले डेटाबेस को दिखाते हैं।
हमने कुछ माइक्रोसर्विस दृष्टिकोणों का पालन किया जैसे:
- प्रति सेवा एक डेटास्टोर: प्रत्येक सेवा का अपना डेटा स्टोर होता है, और डेटा का आदान-प्रदान सेवा इंटरफेस के माध्यम से होता है, न कि किसी अन्य सेवा के डेटा स्टोर को सीधे एक्सेस करके।
- पॉलीग्लॉट पर्सिस्टेंस: प्रत्येक सेवा अपनी आवश्यकताओं के आधार पर सबसे उपयुक्त डेटा स्टोर का उपयोग करती है। पॉलीग्लॉट पर्सिस्टेंस के बारे में बात करते हुए: Redis एक डेटा प्लेटफॉर्म है जो आपको मॉड्यूल द्वारा प्रदान की जाने वाली विभिन्न विशेषताओं और डेटा मॉडल को संयोजित करने की अनुमति देता है ताकि आपकी आवश्यकताओं के अनुरूप डेटा स्टोर बनाया जा सके! यह आश्चर्य की बात नहीं हो सकती कि हमने लाल बॉक्स को लागू करने के लिए Redis और कुछ Redis मॉड्यूल का उपयोग किया।
कार्यान्वयन
RedisMart एक उपयोगकर्ता इंटरफ़ेस प्रदान करता है जो वेब-शॉप वेब एप्लिकेशन द्वारा परोसा जाता है। RedisMart में एक फ्रंटएंड UI (ग्राहक-सामना करने वाली रिटेल वेबसाइट) और एक बैकएंड UI (इन्वेंट्री प्रबंधन के लिए) है। हमने पर्दे के पीछे एप्लिकेशन द्वारा उपयोग की जाने वाली कई सेवाओं को लागू किया।
- खरीदारी: खरीद सेवा (आश्चर्यजनक रूप से) ग्राहक खरीद को संभालती है।
- इन्वेंट्री: इन्वेंट्री सेवा इन्वेंट्री के भीतर स्टॉक की मात्रा के बारे में सवालों का जवाब देती है, और राशि घट जाती है जब कोई ग्राहक आइटम खरीदता है। इन्वेंट्री अपडेट Redis Enterprise की Active-Active सुविधा का लाभ उठाकर अन्य स्थानों में इन्वेंट्री में निकट रीयल-टाइम में दोहराए जाते हैं। Redis Enterprise समवर्ती अपडेट से निपटने के लिए संघर्ष-मुक्त प्रतिकृति डेटा प्रकारों का उपयोग करता है। इस मामले में, काउंटर नुकसान को रोकने के लिए एक रीसेट करने योग्य पॉजिटिव नेगेटिव काउंटर डेटा प्रकार का उपयोग किया जाता है।
- उत्पाद कैटलॉग: उत्पाद कैटलॉग सेवा उत्पाद-संबंधी जानकारी प्रदान करती है और उत्पादों को खोजने के परिष्कृत तरीके प्रदान करती है। यह एक Redis डेटाबेस का उपयोग करता है जिसमें RediSearch + RedisJSON मॉड्यूल तैनात हैं। RedisJSON हमें उत्पाद विवरण को सीधे JSON दस्तावेजों के रूप में संग्रहीत करने की अनुमति देता है। RediSearch JSON दस्तावेजों को इंडेक्स, क्वेरी और पूर्ण-पाठ खोज कर सकता है। उत्पाद अपडेट को Redis Enterprise की Active-Active सुविधा का उपयोग करके कई साइटों में आसानी से प्रसारित किया जा सकता है।
- छवि पहचान: अंत में, छवि पहचान सेवा छवियों पर वेक्टर-समानता खोज के लिए AI मॉडल-सर्विंग कार्यक्षमता प्रदान करती है। यह एक Redis डेटाबेस का उपयोग करता है जिसमें RedisGears, RedisAI, और RediSearch मॉड्यूल स्थापित हैं। RedisGears हमें एक डेटा पाइपलाइन बनाने और इसे वहां निष्पादित करने की अनुमति देता है जहां डेटा रहता है। हमने AI मॉडल सर्विंग और अनुमान के लिए Redis AI का लाभ उठाया। RediSearch का उपयोग AI मॉडल के आउटपुट के आधार पर समान छवियों के लिए वास्तविक खोज करने के लिए किया जाता है।
जैसा कि पहले उल्लेख किया गया है, यह श्रृंखला का पहला लेख है। कृपया व्यक्तिगत सेवाओं को कैसे लागू किया गया, इसके बारे में अधिक जानने के लिए बने रहें।
RedisMart
अब जब हमने पर्दे के पीछे देखा है, तो आइए देखें कि एप्लिकेशन मंच पर कैसा दिखता है।
होम पेज आपको मुख्य उत्पाद श्रेणियां दिखाता है। एक श्रेणी पर क्लिक करने से उत्पाद कैटलॉग सेवा के माध्यम से एक खोज क्वेरी ट्रिगर होती है जो ऐसी श्रेणी से संबंधित पहले 16 उत्पादों को लौटाती है।
"उत्पाद खोजें" फ़ील्ड आपको उत्पादों के लिए पूर्ण-पाठ खोज करने की अनुमति देता है। यह निम्नलिखित खोज परिणाम पृष्ठ की ओर ले जाता है:
खोज परिणाम पृष्ठ में दो खंड हैं: फेसेटेड खोज और वास्तविक परिणाम सूची। फेसेटेड खोज का उपयोग खोज परिणामों को और सीमित करने के लिए किया जा सकता है। आप मुख्य श्रेणी, उप-श्रेणी, मूल्य और रेटिंग के माध्यम से फ़िल्टर करके ऐसा कर सकते हैं। हम ब्लॉग श्रृंखला के भाग दो में इस तरह की फेसेटेड खोज को RediSearch के साथ कैसे साकार किया जाता है, इसके कार्यान्वयन विवरण के बारे में बात करेंगे। मुझे RedisMart के डिबग दृश्य को देखने देकर आपको एक संकेत देने दें:
जैसा कि आप देख सकते हैं, टैग और एग्रीगेशन एक भूमिका निभाते हैं।
ऊपरी दाएं कोने में छोटे कैमरा आइकन पर क्लिक करने से आप किसी ऐसी चीज़ की छवि ले सकते हैं जिसे आप उत्पाद कैटलॉग में ढूंढना चाहते हैं। डग की निम्नलिखित तस्वीर ने हमारे डेटाबेस में कोई अन्य डग नहीं ढूंढा…
…लेकिन इसने कुछ हेडफ़ोन अच्छी तरह से ढूंढ लिए।
मान लें कि आप हेडफ़ोन की एक जोड़ी पर निर्णय लेते हैं और उन्हें खरीदना चाहते हैं। अपना चयन करने के बाद, RedisMart आपको उन्हें अपनी शॉपिंग कार्ट में जोड़ने की अनुमति देता है। चेकआउट प्रक्रिया के दौरान, आप उन्हें डिलीवर करवाने या किसी नजदीकी स्थान पर एकत्र करने का निर्णय ले सकते हैं।
RediSearch की जियो-खोज इस स्थानीय पिकअप सुविधा को शक्ति प्रदान करती है। डिबग दृश्य आपको फिर से एक संकेत देता है कि यह पर्दे के पीछे कैसे साकार होता है।
जैसे ही कोई ग्राहक खरीदारी पूरी करता है, इन्वेंट्री सेवा स्टॉक में वस्तुओं की संख्या को कम करके शामिल हो जाती है। यह हमें सीधे एप्लिकेशन के बैकएंड पर लाता है, जो हमें इन्वेंट्री प्रबंधन करने की अनुमति देता है। RedisMart कल्पना करता है कि तत्काल इन्वेंट्री अपडेट प्रत्येक दोहराई गई साइट पर कैसे देखे जाते हैं। यूएस (GCP us-central1) में एक खरीदारी पलक झपकते ही यूरोप (Azure north-europe) में दोहराई जाती है।
एक बार फिर, हम बाद में अधिक विवरण कवर करेंगे। यहां मुख्य बिंदु यह है कि आप बहुत कम नेटवर्क लेटेंसी पर नजदीकी स्थान से डेटा एक्सेस कर सकते हैं, जबकि डेटा को कई साइटों पर समवर्ती रूप से संशोधित किए जाने पर काउंटर नुकसान को रोका जाता है।
आप निम्नलिखित वीडियो देखकर एप्लिकेशन को क्रिया में देख सकते हैं:
सारांश
हम आशा करते हैं कि आपको Redis के साथ पूरी तरह से चित्रित रिटेल एप्लिकेशन बनाने के बारे में इस ब्लॉग श्रृंखला के पहले भाग को पढ़ने में मज़ा आया। जैसा कि आप देख सकते हैं, Redis रीयल-टाइम डेटा प्लेटफॉर्म हमें RediSearch + RedisJSON की दस्तावेज़ डेटाबेस क्षमताओं का लाभ उठाकर उत्पाद जानकारी तक तत्काल पहुंच (<100ms एंड-टू-एंड लेटेंसी) जैसी आवश्यकताओं को संबोधित करने की अनुमति देता है। RediSearch + RedisGears + RedisAI का संयोजन उत्पाद कैटलॉग के भीतर समान उत्पादों को खोजने के लिए AI-संचालित छवि खोज को सक्षम बनाता है। इसके अलावा, फेसेटेड और जियो-खोज जैसी सुविधाओं को कवर किया गया था। अंतिम, लेकिन कम से कम, हमने आपको दिखाया कि आप Redis Enterprise की Active-Active सुविधा के आधार पर आसानी से एक जियो-रिप्लिकेटेड, रीयल-टाइम इन्वेंट्री बना सकते हैं। यह सब मिलकर, Redis रीयल-टाइम प्लेटफॉर्म रिटेल कंपनियों को समग्र खरीदारी अनुभव को सकारात्मक रूप से प्रभावित करने, ग्राहकों के लिए सर्वोत्तम संभव पूर्ति अनुभव प्रदान करने, और सबसे अधिक लागत-प्रभावी तरीके से इन्वेंट्री को अनुकूलित करने में मदद करता है।
क्या आप RedisMart के लिए हमारे द्वारा लागू की गई व्यक्तिगत सेवाओं के बारे में अधिक जानना चाहते हैं? तो श्रृंखला के अगले ब्लॉग लेख के लिए बने रहें!
इसे स्वयं आज़माना चाहते हैं? Redis को रीयल-टाइम डेटा प्लेटफॉर्म के रूप में उपयोग करके अपने हाथ गंदे करने के लिए यहां कुछ लिंक हैं:
- मॉड्यूल के बारे में अधिक
- github.com/RediSearch
- github.com/RedisJSON
- github.com/RedisGears
- github.com/RedisAI
- Redis Enterprise Cloud
- Active-Active जियो-वितरण
क्रेडिट
इस डेमो एप्लिकेशन में योगदान देने वाले सभी लोगों को बहुत-बहुत धन्यवाद:
- RedisConf के दौरान डेमो एप्लिकेशन प्रस्तुत करने के लिए यिफ्ताच शूलमैन और आशा साहू
- Redis मार्केटिंग टीम (और विशेष रूप से उडी गोटलिब, आशा साहू, डग टिडवेल, और ब्रायसन कोल्स) डेमो एप्लिकेशन की आवश्यकता सूची में योगदान देने, RedisConf आयोजित करने, UI डिजाइन में मदद करने और इस ब्लॉग पोस्ट में योगदान देने के लिए
- तकनीकी सक्षमता टीम (और विशेष रूप से मार्टिन फोर्स्टनर, ग्रेग जॉर्जेस, और डेविड मैयर) डेमो एप्लिकेशन को लागू करने, परीक्षण करने और डिजाइन करने के लिए—और इस ब्लॉग पोस्ट में योगदान देने के लिए
- CTO टीम (और विशेष रूप से लीबेल ईडेलमैन, गाय कोरलैंड) मॉड्यूल और छवि पहचान सेवा विकसित करने के लिए
- उत्पाद प्रबंधन टीम (और विशेष रूप से पीटर कैलियाउ, इमैनुएल केलर, जोनाथन सैलोमन, और अमीराम मिज़ने) डेमो एप्लिकेशन की आवश्यकता सूची में योगदान देने और उत्पाद सुविधाएँ प्रदान करने के लिए
- और यहां उल्लेख न किए गए सभी लोग
हम इस ब्लॉग श्रृंखला को RedisMart एप्लिकेशन के प्राथमिक डेवलपर, मार्टिन फोर्स्टनर को समर्पित करना चाहते हैं। यह बहुत दुख के साथ साझा करना पड़ रहा है कि उनका हाल ही में निधन हो गया। मार्टिन का ज्ञान, प्रतिभा, और हास्य की भावना बेजोड़ थी। वह Redis के लिए सिर्फ एक सॉफ्टवेयर इंजीनियर से कहीं अधिक थे—वह एक सहयोगी, टीममेट, मेंटर, और एक दोस्त थे। शांति से आराम करो, मार्टिन, हम तुम्हें याद करते हैं!