App इंजन बनाम Firebase - Bizzaro दुनिया में आपका स्वागत है

यह लगभग 2018 है, और आप नए साल के संकल्प की तलाश करेंगे। यहाँ कुछ अच्छे हैं:

  • मैं मानता हूं कि मुझे उपयोगकर्ता क्रेडेंशियल्स पर भरोसा नहीं किया जा सकता है
  • मैं अपना स्वयं का उपयोगकर्ता प्रमाणीकरण प्रवाह लिखना बंद करने जा रहा हूं

उपयोगकर्ता क्रेडेंशियल्स पर गर्मी अब इतनी अधिक है कि जब तक आपको एक समर्पित टीम का निर्माण और अपने प्रमाणीकरण प्रणालियों का विश्लेषण करने, पहचान का प्रबंधन करने और वास्तविक समय में संभावित उल्लंघनों की निगरानी करने की अनुमति नहीं मिलती है, तब तक आप एक ऊंचे समुद्र में एक टपका हुआ चक्कर लगा रहे हैं, बस एक बड़ी लहर की प्रतीक्षा कर रहा है कि आप गुमनामी में हैं।

आप में से अधिकांश की तरह, मुझे मौजूदा प्रणालियों से निपटना होगा जो क्रेडेंशियल्स और यादा यादा रखती हैं, आप क्या करने जा रहे हैं। लेकिन मैं जो कर सकता हूं, वह इसे बदतर बना रहा है।

प्रमाणीकरण - क्या कोई अन्य व्यक्ति ऐसा नहीं कर सकता है?

क्या कोई और ऐसा नहीं कर सकता है?

Google, Facebook, Twitter, Github, वहाँ बहुत सारे सार्वजनिक प्रमाणीकरण प्रदाता हैं। उन सभी का समर्थन करना जटिल है, लेकिन ऐसा करने के लिए, आप Auth0 जैसी तृतीय पक्ष सेवाओं का उपयोग कर सकते हैं।

ऐप इंजन परियोजनाओं के मामले में, हमारे पास Google क्लाउड प्लेटफ़ॉर्म में एक शानदार अंतर्निहित विकल्प है।

या, ठीक है, लगभग Google क्लाउड प्लेटफ़ॉर्म में। यह बिजारो वर्ल्ड क्लाउड प्लेटफॉर्म में है, जिसे फायरबेस के रूप में जाना जाता है।

फायरबेस - बिज़ारो ऐप इंजन

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

आप में से जो लोग App Engine से परिचित हैं, उनका उपयोग मानक क्लाइंट-सर्वर तरीके से करने के लिए किया जाएगा, अर्थात: एक सेवा के रूप में प्लेटफ़ॉर्म:

अनुप्रयोग इंजन, सेवा के रूप में प्लेटफ़ॉर्म (PAAS)

Google क्लाउड प्लेटफ़ॉर्म की तरह फायरबेस, जटिल सॉफ़्टवेयर सिस्टम के लिए क्लाउड सेवाओं से भरा है। हालांकि, मानक जीसीपी (और विशेष रूप से ऐप इंजन) के विपरीत, इसकी जड़ें एक सेवा के रूप में बैकएंड के रूप में हैं, जो मोबाइल दुनिया से बाहर आती है, और मोबाइल डेवलपर्स के विशेष रूप से बैक एंड सिस्टम लिखने के लिए सेवा प्रदान करती है। वास्तुकला इस तरह दिखता है:

फायरबेस, बैकेंड ए सर्विस (बीएएस)

ध्यान दें कि ग्राहक वेब और मोबाइल वातावरण के लिए विशेष एसडीके का उपयोग करते हुए फायरबेस में सेवाओं से सीधे बात करते हैं, आपके जावास्क्रिप्ट क्लाउड फ़ंक्शंस कोड के साथ (बू! एक सभ्य भाषा के बारे में क्या!) अन्य सेवाओं में होने वाली घटनाओं के आधार पर उन सेवाओं द्वारा ट्रिगर किया जा रहा है। ; क्लाइंट कभी भी आपका कोड नहीं बुलाते हैं, आप API का निर्माण नहीं कर सकते।

यह ऐप इंजन के विपरीत है, जहाँ आपको कॉल करने के लिए अपने क्लाइंट के लिए एक एपीआई लिखना होगा, और फिर आप क्लाइंट की ओर से अन्य जीसीपी सेवाओं से बात करेंगे।

फायरबेस की विचित्र विश्व वास्तुकला के बारे में वास्तव में सकारात्मक बात यह है कि यह कुछ चीजों को बेहतर करती है। मेरे उद्देश्यों के लिए सबसे उल्लेखनीय प्रमाणीकरण और परिवर्तन अधिसूचना (क्रमशः फायरबेस प्रमाणीकरण और रियलटाइम डेटाबेस के माध्यम से) हैं।

Firebase + App इंजन - कैट डॉग वास्तुकला

मुश्किल बात यह है कि, जबकि App Engine और Firebase वास्तव में सुपरमैन और Bindraro की तरह नहीं लड़ते हैं, वे विशेष रूप से या तो आसानी से एक साथ सिलाई नहीं करते हैं। यह एक बिल्ली-कुत्ते का एक सा है। आइए वास्तुकला को देखें:

Firebase + AppEngine - एक सेवा के रूप में कैट डॉग (CDaaS)

यह मूल वास्तुकला है जिसे मैं अगले कुछ लेखों में कोड के साथ लिखूंगा। मूल बातें हैं:

1 - क्लाइंट फायरबेस प्रमाणीकरण के माध्यम से प्रमाणित करेगा।

2 - इसके बाद ऐप इंजन से बात करते समय उपयोग करने के लिए एक प्रमाणीकरण टोकन होगा।

3 - जब ऐप इंजन में महत्वपूर्ण घटनाएँ होती हैं, जिसके बारे में हम चाहते हैं कि ग्राहक हमारे बारे में जानकारी प्राप्त करें, तो हम फायरबेस रियलटाइम डेटाबेस में जानकारी को धक्का देंगे।

4 - फायरबेस रियलटाइम डेटाबेस क्लाइंट में बदलाव को आगे बढ़ाएगा। क्लाइंट रियलटाइम डेटाबेस को इच्छानुसार क्वेरी भी कर सकता है।

आप देखेंगे कि मैंने चित्र से क्लाउड फ़ंक्शंस को निष्कासित कर दिया है; हम यहां उनका उपयोग नहीं करेंगे। मैं इस सेटअप को अभी भी एक साधारण पायथन आधारित ऐप इंजन ऐप की तरह महसूस करना चाहता हूं, इसलिए नोड के लिए जावास्क्रिप्ट लिखने में न पड़ें।

यह भी ध्यान दें कि हम रियलटाइम डेटाबेस में ज्यादा नहीं डालेंगे; यह महंगा है ($ 5 / GB!)। हम इसे केवल सूचनाएँ बदलने के लिए उपयोग करते हैं, और वास्तविक डेटा को क्लाउड डेटास्टोर में रखते हैं।

आगे क्या होगा?

अगले लेख में हम वास्तविक कोड में आएंगे, क्योंकि मैं फायरबेसबीयूआई का उपयोग करते हुए, चरण 1 और 2 से ऊपर आता हूं। हम एक उपयोगी कंकाल के साथ समाप्त होंगे जो फायरबेस प्रमाणीकरण के उपयोग से एकल पृष्ठ वेब ऐप में साइन-इन / साइन-आउट से संबंधित है, संभवत: पायथन फ्लास्क बैक एंड से बात कर रहा है।

पोस्ट स्क्रिप्ट: क्लाउड फायरस्टार के बारे में क्या?

मैंने नई हॉटनेस, क्लाउड फायरस्टार को छोड़ दिया है। जब मैं इसके द्वारा अंतर्ग्रही हो जाता हूं, तो मैं इसे उपयोग करने के तरीके के बारे में बहुत काम नहीं कर सकता।

फायरबेस का क्लाउड फायरस्टार जीसीपी का क्लाउड डेटास्टोर (यानी: मेगास्टोर) है, जिसमें कुछ बहुत अच्छे बदलाव हैं:

  • यह सरल है; कोई आर्कन कुंजी संरचनाएं, कोई वर्ग नहीं, बस सरल संग्रह + आइटम संरचनाएं
  • इसमें ग्राहकों के लिए Firebase के रीयलटाइम डेटाबेस की तरह रियलटाइम सूचनाएं हैं
  • यह क्लाउड डाटस्टोर की तरह तराजू है।

दुर्भाग्य से, इसे कुछ कमियां भी मिलीं:

  • यह क्लाउड डेटास्टोर में लेनदेन की कुछ शक्ति गायब है।
  • जब आप किसी ऐप इंजन ऐप में क्लाउड फायरस्टोर का उपयोग करते हैं, तो आप क्लाउड डेटास्टोर का उपयोग नहीं कर सकते
  • अनुकूलन को क्लाउड फ़ंक्शंस के उपयोग की आवश्यकता होती है (और तब भी उनके पास एक ndb मॉडल वर्ग पर पूर्व-संभाला हैंडलर की शक्ति नहीं होती है)। आप एक सामान्य क्लाउड फ़ंक्शन लिख सकते हैं, जो मुझे लगता है कि अजगर अजगर ऐप से होकर गुजरता है।

लेकिन मेरे लिए सबसे बड़ी कमी यह है, क्योंकि यह फायरबेस का हिस्सा है, वास्तुकला इस तरह दिखता है:

इसके साथ मेरी समस्या है, यह चाहता है कि मैं अपने डेटाबेस को अपने बाहरी कॉलर्स और मेरे बैक एंड कोड के बीच रखूं। जो मेरे दिमाग में वास्तव में कॉकैमामी वास्तुकला है।

मैं समझता हूं कि यह इस तरह से काम क्यों करना चाहता है; इस तरह से, आप ग्राहकों को रियलटाइम नोटिफिकेशन ठीक से कर सकते हैं, और बाकी फायरबेस के साथ एकीकरण बेहतर है। लेकिन, मैं अभी यह नहीं देखता कि आप इस कॉन्फ़िगरेशन में वास्तव में गंभीर बैक एंड ऐप का निर्माण कैसे करते हैं, और यदि आप कुछ गंभीर निर्माण नहीं करना चाहते हैं, तो आप मेगास्टॉर-आधारित समाधान का उपयोग कैसे करेंगे? शक्तिशाली, लेकिन सावधानी से निपटने की आवश्यकता है)?

डॉक्स में, यह स्पष्ट है कि वेब (ब्राउज़र साइड जावास्क्रिप्ट), एंड्रॉइड और आईओएस लाइब्रेरी प्रथम श्रेणी के नागरिक हैं, और सर्वर साइड वातावरण द्वितीय श्रेणी के नागरिक हैं। पायथन को फायरबेस-एडमिन लाइब्रेरी की आवश्यकता होती है जो ऐप इंजन पर जाने के लिए थोड़ा सा कम है (हालांकि यह अन्य फायरबेस सेवाओं के साथ भी एक समस्या है)।