स्नैपचैट ट्वीन्स और टीनएजर्स के बीच काफी मशहूर है। यदि आप यह नहीं समझ सकते कि यह कैसे काम करता है, तो आप शायद 25 वर्ष से ऊपर हैं। स्नैपचैट, सबसे लोकप्रिय सोशल मीडिया अनुप्रयोगों में से एक, बच्चों और किशोरों को वही देता है जो वे चाहते हैं: सामान्य घटनाओं को साझा करने का एक आसान तरीका उन्हें शांत दिखने के साथ-साथ।
फेसबुक और ट्विटर के विपरीत, जो आपके द्वारा की जाने वाली हर चीज को रिकॉर्ड और प्रकाशित करते हैं, स्नैपचैट उन संदेशों को नियोजित करता है जो गायब होने वाले हैं (देखें कि वे कैसे नहीं होते हैं)।
स्नैपचैट के बारे में बहुत कुछ है, और यदि आप एक डेवलपर हैं तो यह और भी अधिक है। तो, यह पोस्ट आपको स्नैपचैट के बारे में एक उच्च-स्तरीय जानकारी देगी प्रणाली की रूपरेखा और भी बहुत कुछ अंतर्दृष्टि।
परिचय
स्नैपचैट एक यूएस-आधारित है सामाजिक नेटवर्किंग ऐप जो उपयोगकर्ताओं को तुरंत कनेक्ट करने, चित्र साझा करने और बहुत कुछ करने देता है।
- संदेशों और छवियों (या स्नैप्स) की 24 घंटे की समय सीमा होती है। लोगों को अपनी कहानियों को समूहों में साझा करने के लिए प्रोत्साहित करता है।
- स्नैप मैप उपयोगकर्ताओं को एक मानचित्र पर देखने की अनुमति देता है जहां उनके दोस्त हैं।
- यादें उपयोगकर्ताओं को उन तस्वीरों की याद दिलाती हैं जिन्हें उन्होंने एक साल बाद सहेजा या साझा किया था।
- स्नैपचैट युवा पीढ़ी, खासकर किशोरों के बीच बेहद लोकप्रिय है। ऐप पर 319 मिलियन सक्रिय उपयोगकर्ता हैं, और हर दिन 5.4 बिलियन स्नैप भेजे जाते हैं।
महत्वपूर्ण डिजाइन शर्तें
अखंड वास्तुकला - एक एकल-स्तरीय अनुप्रयोग जो अन्य अनुप्रयोगों से स्वतंत्र रूप से संचालित होता है, एक मोनोलिथ (अखंड वास्तुकला) के रूप में जाना जाता है। एक पत्थर का खंभा किसी कार्य को पूरा करने के लिए आवश्यक सभी गतिविधियों को करने और संभालने के लिए डिज़ाइन किया गया है। एप्लिकेशन शुरू से अंत तक सभी कार्य करता है।
Microservices – यह मोनोलिथ के विपरीत ध्रुवीय है। Microservices एक वास्तुशिल्प दृष्टिकोण है जो एक एप्लिकेशन को सेवाओं के संग्रह के रूप में व्यवस्थित करता है। इन सेवाओं का उपयोग किसी एप्लिकेशन के कई पहलुओं को नियंत्रित करने के लिए किया जाता है। एक ग्राहक एक आदेश देता है, एक वेटर इसे लेता है और इसे वितरित करता है, और एक शेफ इसे तैयार करता है। इस उदाहरण में, प्रत्येक घटक स्वतंत्र रूप से और दूसरों से अलग कार्य करता है; कोई नहीं जानता कि दूसरे क्या कर रहे हैं, और किसी की भी उसी जानकारी तक पहुंच नहीं है।
JSON: यह एक पाठ-आधारित प्रारूप है जिसका उपयोग जावास्क्रिप्ट वस्तुओं, शाब्दिक, सरणियों और डेटा को प्रदर्शित करने के लिए किया जा सकता है। यह टेक्स्ट-आधारित प्रारूप पढ़ने और लिखने में आसान होने के साथ-साथ सॉफ़्टवेयर द्वारा सुपाच्य होने के लिए अभिप्रेत है। JSON का उपयोग आमतौर पर सर्वर और ऑनलाइन एप्लिकेशन के बीच डेटा और सूचना स्थानांतरित करने के लिए किया जाता है।
वाद्य-स्थान: कई कार्यों को स्वचालित करने की तकनीक को ऑर्केस्ट्रेशन के रूप में जाना जाता है। इन नौकरियों में कंप्यूटर सिस्टम और सॉफ्टवेयर कॉन्फ़िगरेशन, समन्वय और प्रशासन शामिल हैं।
प्रतिनिधि: एक प्रॉक्सी एक संसाधन की तलाश करने वाले ग्राहक और इसे प्रदान करने वाले सर्वर के बीच मध्यस्थ के रूप में कार्य करता है।
मेष: सर्विस मेश एक सॉफ्टवेयर आर्किटेक्चर पैटर्न है जो प्रॉक्सी के माध्यम से सेवाओं के बीच विनियमित, अवलोकन योग्य और सुरक्षित संचार की अनुमति देने के लिए एक बुनियादी ढांचा परत में एक परत जोड़ता है।
उच्च स्तरीय डिजाइन
अखंड समस्याएं
स्नैपचैट की उत्पत्ति Google ऐप इंजन पर आधारित क्लाउड-आधारित मोनोलिथ के रूप में हुई थी। हालाँकि, जैसे-जैसे कार्यक्रम की लोकप्रियता बढ़ती गई और अधिक उपयोगकर्ता और डेटा प्राप्त होते गए, स्केलेबिलिटी एक मुद्दा बन गया।
इसके अतिरिक्त, मोनोलिथ के भीतर एक विशाल विस्फोट त्रिज्या के साथ, सिस्टम-व्यापी गड़बड़ी अधिक संभव थी। स्नैपचैट की समस्याओं में से एक को "कॉमन्स की त्रासदी" के रूप में परिभाषित किया गया था, जिसमें सुविधाओं तक संसाधनों तक पहुंच के लिए प्रतिस्पर्धा की गई थी; ऐप लॉन्च के समय सुविधाएँ लोड हो रही थीं, जिससे कुछ सुविधाएँ तेज़ी से लोड होती हैं लेकिन अन्य धीमी लोड होती हैं।
इंजीनियरों ने विकास के दृष्टिकोण से अपने घटकों की स्पष्ट दृश्यता, पृथक्करण और स्वामित्व की भी मांग की, ताकि सेवा लचीली और कुशल हो सके।
परिवर्तन
जैसे ही स्नैपचैट का विस्तार हुआ, फर्म को एहसास हुआ कि उसे अपने अखंड बुनियादी ढांचे को छोटे, अधिक कुशल टुकड़ों में तोड़ने की जरूरत है। घटी हुई विलंबता प्रदान करने के लिए, संगठन ने एक माइक्रोसर्विसेज-आधारित डिज़ाइन विकसित करने का निर्णय लिया।
उन लक्ष्यों को पूरा करने के लिए, Snapchat ने Amazon DynamoDB, एक स्केलेबल NoSQL डेटाबेस सेवा का उपयोग करके अपने सॉफ़्टवेयर को अपडेट करने का विकल्प चुना। फर्म अपने प्रयासों के परिणामस्वरूप औसत विलंबता को 20% तक कम करने में सक्षम थी।
ऐप को निगम द्वारा कई छोटे अनुप्रयोगों में फिर से लिखा गया। स्नैपचैट की शुरुआत कैमरा, चैट, मेमोरी, पिक्चर एडिटिंग, कंटेंट कंजम्पशन और मैप सहित कई एप्लिकेशन के साथ हुई। हालांकि इन कार्यक्रमों को एक मोनोलिथ में एकीकृत करना उपभोक्ताओं के लिए सुविधाजनक था, इसने अच्छा प्रदर्शन बनाए रखने के मामले में एक गंभीर तकनीकी समस्या पेश की।
पुनर्लेखन के लिए, निगम ने कई बुनियादी नियम स्थापित किए। प्रीलोड न करें; प्रत्येक सुविधा का अपना ऐप होना चाहिए, और यह तेज़ होना चाहिए। स्नैपचैट ने पुनर्लेखन को सक्षम करने के लिए कई स्थानों पर संशोधनों को रोक दिया, जिससे यह सख्ती से एक तकनीकी कार्य बन गया।
अतिरिक्त सुविधाओं का एकीकरण
स्नैपचैट के कैमरा ऐप में अन्य चीजों के अलावा लेंस, फिल्टर, बिटमोजिस और संवर्धित वास्तविकता एनिमेशन जोड़ने की क्षमता है। स्नैपचैट का चैट ऐप उपयोगकर्ताओं को तस्वीरें स्टोर करने, बातचीत को बचाने, इमोटिकॉन्स जोड़ने और बहुत कुछ करने की अनुमति देता है।
स्नैपचैट का नक्शा, अन्य बातों के अलावा, यदि आप चाहते हैं तो आप दोस्तों की निगरानी कर सकते हैं। यादें, फोटो संपादन और सामग्री की खपत सभी अपनी अनूठी क्षमताओं के साथ अलग-अलग स्नैपचैट ऐप हैं।
यादें आपको बाद में उपयोग के लिए तस्वीरों या वीडियो को स्टोर करने या संशोधित करने की अनुमति देती हैं, साथ ही उन्हें अपलोड या भेजती हैं। उपयोगकर्ता फिल्मों को काटने, टेक्स्ट जोड़ने, स्टिकर जोड़ने आदि के लिए चित्र संपादन का भी उपयोग कर सकते हैं।
स्नैपचैट की बाहरी सामग्री की खपत से तात्पर्य है कि यह उपयोगकर्ताओं को कई मापदंडों के आधार पर दिखाता है।
Microservices
उस समय नेटवर्क प्रश्नों को निष्पादित करने के लिए प्रोग्राम बड़े पैमाने पर JSON पर निर्भर था। हालाँकि, JSON को पार्स करना समय लेने वाला और अक्षम था। स्नैपचैट ने इस समस्या से निपटने के लिए एक कार्यान्वयन विवरण के रूप में JSON के उपयोग को छिपाने के लिए एक केंद्रीकृत नेटवर्क प्रबंधन API का उपयोग किया।
माइक्रोसर्विसेज अनुप्रयोग राज्य प्रबंधन, सेवा संचार और विफलता प्रबंधन की चुनौतियों का परिचय देते हैं। स्नैपचैट ने एक मजबूत और भरोसेमंद सिस्टम बनाने के लिए ऑर्केस्ट्रेशन की कठिनाइयों को दूर करने के लिए टेम्पोरल जैसी ओपन-सोर्स तकनीकों का इस्तेमाल किया।
परिणामस्वरूप, संगठन ने सर्विस मेश डिज़ाइन पैटर्न का उपयोग करने का निर्णय लिया। स्नैपचैट ने इस पैटर्न को प्राप्त करने के लिए एक अन्य ओपन-सोर्स टूल एनवॉय का इस्तेमाल किया, जो प्रॉक्सी के रूप में काम करता है। Envoy ने इंफ्रास्ट्रक्चर के माध्यम से सर्विस ट्रैफिक के प्रवाह को प्रबंधित किया, जिससे डेवलपर्स को संभावित कठिनाइयों में दृश्यता मिली।
स्नैपचैट ने सर्विस मेश के भीतर स्विचबोर्ड नामक एक आंतरिक ऐप बनाया। स्विचबोर्ड स्नैप की सेवाओं के लिए एक नियंत्रण कक्ष के रूप में कार्य करता है, जिससे उपयोगकर्ता ट्रैफ़िक को स्थानांतरित कर सकते हैं, सेवा निर्भरता का प्रबंधन कर सकते हैं (एक सुविधा जो एक सेवा को दूसरों की स्थिति पर निर्भर होने की अनुमति देती है), और क्षेत्रों को खाली कर देती है।
सेवाओं के भीतर संभावित कॉन्फ़िगरेशन की जटिलता को सरल बनाने के लिए, पूरे Envoy API को उजागर करने के बजाय स्विचबोर्ड का उपयोग किया गया था। Snap के पास सर्विस मेश की बदौलत अपनी माइक्रोसर्विसेज के लिए एक सामान्य आंतरिक और क्षेत्रीय नेटवर्क है।
एक ही क्षेत्र के अंदर सेवाएं सार्वजनिक इंटरनेट का उपयोग किए बिना एक दूसरे से जुड़ सकती हैं, और कोई बाहरी नेटवर्क ट्रैफ़िक आंतरिक नेटवर्क भागों के साथ संचार नहीं कर सकता।
केवल गेटवे ही सुरक्षा कारणों से स्वयं को इंटरनेट के संपर्क में लाने के लिए अधिकृत होंगे। उदाहरण के लिए, एपीआई गेटवे, आसानी से सामने के दरवाजे के रूप में काम कर सकते हैं, ग्राहकों/उपयोगकर्ताओं से अनुरोधों को संसाधित कर सकते हैं और उन्हें नेटवर्क के साथ रूट कर सकते हैं।
नेटवर्क और एपीआई गेटवे
स्नैपचैट क्लाइंट के सभी प्रश्न एपीआई गेटवे के माध्यम से आते हैं। यह उसी Envoy छवि का उपयोग करता है और उसी कंट्रोल प्लेन से जुड़ता है जिससे हमारे आंतरिक माइक्रोसर्विसेज जुड़ते हैं। हमारा कंट्रोल प्लेन हमें कस्टम एनवॉय फिल्टर को सक्षम करने की अनुमति देता है।
Snapchat के प्रमाणीकरण सिस्टम के साथ-साथ हमारी रेट लिमिटिंग और लोड शेडिंग तकनीकों को इन फिल्टर द्वारा नियंत्रित किया जाता है। फ़िल्टर श्रृंखला पूर्ण होने के बाद संबंधित माइक्रोसेवा के अनुरोधों को रूट करने के लिए दूत सर्विस मेश का उपयोग करता है।
निष्कर्ष
स्नैपचैट का एपीआई गेटवे ऐप की कई कार्यात्मकताओं के लिए बाहरी ट्रैफ़िक को रूट करता है। कॉन्फ़िगरेशन स्थिति को संशोधित करने के लिए उपयोगकर्ता के अनुरोध सर्वर द्वारा प्रबंधित किए जाते हैं, जो तब डेटा प्रदान करें और ऐप की कई सेवाओं के बारे में जानकारी वापस।
कुल मिलाकर, स्नैपचैट के वर्तमान डिज़ाइन की तुलना एक ही ऑपरेटिंग सिस्टम पर चलने वाले कई प्रोग्रामों से की जा सकती है, जो इस मामले में स्नैपचैट ऐप है। मैंने आपको स्नैपचैट सिस्टम डिज़ाइन का एक उच्च-स्तरीय अवलोकन प्रदान करने का बहुत प्रयास किया। मुझे उम्मीद है कि यह आपके लिए उपयोगी साबित होगा।
एक जवाब लिखें