PostgREST आपके बैकएंड कोड का 80% हिस्सा खत्म कर देता है

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00क्या होगा अगर आपका Postgres डेटाबेस ही API बन जाए और आपको कोई बैकएंड कोड न लिखना पड़े?
00:00:05हर बार जब आप API बनाते हैं, तो आप बार-बार वही बैकएंड कोड लिखते हैं। रूट्स, कंट्रोलर्स, वैलिडेशन, ऑथ, यह सब बस आपके
00:00:14डेटाबेस से बात करने के लिए। फिर आप एक कॉलम बदलते हैं और सब कुछ टूट जाता है। कोई कस्टम बैकएंड कोड नहीं। कोई कंट्रोलर नहीं। कोई ORM लेयर नहीं।
00:00:21PostgREST यही करता है। यह Supabase के पीछे का इंजन है। यह गंभीर प्रोडक्शन ट्रैफ़िक को संभालता है और बस कुछ ही मिनटों में
00:00:29मैं आपको दिखाने जा रहा हूँ कि कैसे।
00:00:31अब अगर आप API बनाते हैं, तो यह पूरे स्टैक में सबसे कष्टप्रद दर्द बिंदुओं पर प्रहार करता है।
00:00:40डुप्लिकेटेड लॉजिक। आप डेटाबेस में डेटा को परिभाषित करते हैं।
00:00:44फिर आप कहीं और एक्सेस रूल्स, बैकएंड कोड और वैलिडेशन को परिभाषित करते हैं।
00:00:49फिर हम कहीं और रिस्पॉन्स हैंडलिंग के लिए भी वही करते हैं। एक ही सिस्टम, कई लेयर्स, चीज़ों के टूटने की कई संभावनाएँ।
00:00:56PostgREST इन सबको खत्म करता है। GitHub पर इसके 26,000 से अधिक स्टार्स हैं और इसका उपयोग Supabase द्वारा प्रोडक्शन स्केल पर किया जाता है।
00:01:03यह आपके स्कीमा को कुछ ही मिनटों में प्रोडक्शन के लिए तैयार REST API में बदल देता है। कोई ORM नहीं, कोई कंट्रोलर नहीं।
00:01:10सिक्योरिटी डेटाबेस में ही रहती है, जिसका अर्थ है कम डुप्लिकेशन, कम मेंटेनेंस, और उन उबाऊ चीज़ों को जोड़ने में बहुत कम समय।
00:01:19मैं आपको दिखाता हूँ। अगर आप ऐसे कोडिंग टूल्स का आनंद लेते हैं जो आपके वर्कफ्लो को तेज़ करते हैं, तो सब्सक्राइब ज़रूर करें।
00:01:24हमारे वीडियो हर समय आते रहते हैं।
00:01:26ठीक है। अब चलिए वास्तव में इसे बनाते हैं। ठीक है, यहाँ सेटअप है। तीन कंटेनर।
00:01:32बस इतना ही। Postgres, PostgREST, और कुछ डॉक्स के लिए Swagger UI।
00:01:38यहाँ Docker Compose फ़ाइल है। यहाँ ज़्यादा कुछ नहीं हो रहा है। बस तीन सर्विसेज़ जिन्हें मैंने एक साथ जोड़ा है।
00:01:45मैं इसे हमारी भरोसेमंद कमांड Docker Compose के साथ शुरू करता हूँ। यह चलने लगेगा और मेरा काम हो गया।
00:01:51कोई डिपेंडेंसी इंस्टॉल नहीं करनी। कोई सर्वर सेटअप नहीं करना। अब, डेटाबेस को देखते हैं।
00:01:55मैं यहाँ यह डॉकर कमांड चलाने जा रहा हूँ और बस इतना ही। एक बहुत ही सरल todos टेबल। ID, title, completed, created, सभी बुनियादी चीज़ें।
00:02:04वास्तव में बस यही सब यहाँ हो रहा है। लेकिन यह, यह वह हिस्सा है जहाँ यह उपयोगी हो जाता है।
00:02:09रो लेवल सिक्योरिटी (RLS)। हम सीधे डेटाबेस के अंदर SQL में परिभाषित करते हैं कि कौन किस चीज़ को एक्सेस कर सकता है।
00:02:17हमारे सिस्टम में कहीं और कोई बैकएंड ऑथ लॉजिक नहीं बैठा है। यहाँ पॉलिसी है।
00:02:22मेरे पास anon के लिए फुल एक्सेस है, true के साथ check true का उपयोग करते हुए। तो फिलहाल, सब कुछ अनुमत है। अब यह देखें।
00:02:29मैं इस curl कमांड के साथ get todos हिट करने जा रहा हूँ और बस इतना ही। सीधे Postgres से पूरा JSON।
00:02:35कोई API कोड नहीं। अब इसी पर आगे बढ़ते हुए, मैं अब इसे फ़िल्टर करता हूँ। यह तुरंत काम करता है।
00:02:41अगर मैं इसे सॉर्ट करता हूँ, तो देखिए, यह हो गया। अब चलिए एक और रो बनाते हैं, JSON बॉडी के साथ एक पोस्ट रिक्वेस्ट भेजते हैं और हम कर चुके।
00:02:50और यह पहले से ही डेटाबेस में है। यहाँ कोई ORM लेयर तालमेल बिठाने की कोशिश नहीं कर रही है।
00:02:56और यहाँ वह हिस्सा है जो वास्तव में लोगों को प्रभावित करता है। Open API डॉक्स, ऑटो-जेनरेटेड Swagger UI। यह बस यहीं है।
00:03:04मैं इसे खोलता हूँ और हमें एक पूर्ण इंटरैक्टिव API मिलता है। आप सब कुछ एक्सप्लोर कर सकते हैं, एंडपॉइंट्स टेस्ट कर सकते हैं, स्कीमा देख सकते हैं।
00:03:11तो शून्य से, अब आपके पास पूर्ण CRUD, फ़िल्टरिंग, सॉर्टिंग, पेजिनेशन है। आपके पास RLS के माध्यम से बुनियादी ऑथ और डॉक्स हैं, वह भी एक मिनट से कम समय में।
00:03:21तो लोग इसका उपयोग क्यों करते हैं? खैर, अगर वह पर्याप्त नहीं था, तो इसलिए क्योंकि पारंपरिक बैकएंड काम में एक टैक्स होता है।
00:03:26और उस टैक्स का अधिकांश हिस्सा प्रोडक्ट का काम नहीं है। वास्तव में हम जो कर रहे हैं वह सब मेंटेनेंस का काम है, है ना?
00:03:33अगर आप सामान्य स्टैक के बारे में सोचते हैं, शायद वह express, Prisma, कंट्रोलर्स, सर्विसेज़, एक जगह वैलिडेशन है।
00:03:40फिर हमारे पास दूसरी जगह ऑथ है। आपका डेटाबेस लॉजिक पूरी तरह से कहीं और है।
00:03:45अब उसकी तुलना PostgREST से करें। आपका स्कीमा API को परिभाषित करता है। आपकी सुरक्षा RLS है।
00:03:52आपके संबंध पहले से ही डेटाबेस में मौजूद हैं। इसलिए आपके डेटा के चारों ओर एक ट्रांसलेशन लेयर बनाने के बजाय, हम सिर्फ डेटा को सही ढंग से पेश करते हैं।
00:04:02यह बहुत अलग है। अब इसकी तुलना एक कस्टम बैकएंड से करें। आपको सब कुछ खुद लिखना होगा।
00:04:07वह आपको लचीलापन देता है। हाँ, ज़रूर। लेकिन वह आपको मेंटेन करने के लिए बहुत अधिक कोड भी देता है।
00:04:13PostgREST सरल रहता है। REST प्लस Postgres। सुरक्षा डेटाबेस में है। यह मिडलवेयर या रूट हैंडलर में बिखरी हुई नहीं है।
00:04:23आपका मेंटेनेंस कम रहता है क्योंकि आपका API आपके स्कीमा को फॉलो करता है। इसलिए लोग इसे पसंद करते हैं।
00:04:28अब, निष्पक्ष होने के लिए, यहीं लोग मुसीबत में पड़ते हैं क्योंकि एक बार जब कुछ ऐसा साफ महसूस होने लगता है, तो लोग ऐसा व्यवहार करने लगते हैं जैसे यह सब कुछ हल कर देता है।
00:04:34यह सब कुछ हल नहीं करता है, है ना? अभी भी ऐसी चीज़ें हैं जिनका हमें ध्यान रखना होगा।
00:04:38इसमें कुछ ट्रेड-ऑफ़ होंगे और आपको इसे छूने से पहले पता होना चाहिए कि किन चीज़ों पर नज़र रखनी है।
00:04:43लोग यहाँ जो पसंद करते हैं वह, स्पष्ट है। इसके साथ बनाना तेज़ है। आप आइडिया से वर्किंग API तक बहुत तेज़ी से जा सकते हैं।
00:04:51और यह वास्तव में अच्छी तरह से स्केल भी करता है। इसके अलावा, Supabase इसे साबित करता है।
00:04:55वे इसका उपयोग कर रहे हैं। लेकिन यहाँ कमियाँ यह हैं कि भारी रो लेवल सिक्योरिटी का उपयोग डेटाबेस लोड को बढ़ाएगा।
00:05:02इसलिए आपको सावधानी से सोचना होगा कि आप इसे कैसे डिज़ाइन करते हैं। जटिल लॉजिक आपको बहुत सारे SQL फंक्शन्स या व्यूज़ की ओर धकेल सकता है।
00:05:10और कुछ लोग इसे पसंद करेंगे और कुछ लोग इससे नफरत करेंगे। तो क्या आपको इसका उपयोग करना चाहिए या इसे आज़माना चाहिए?
00:05:15हाँ, सही प्रोजेक्ट्स के लिए। अगर आप प्रोटोटाइप, MVP या Postgres के आसपास केंद्रित कुछ भी बना रहे हैं, तो ज़रूर, इसे एक बार आज़माएँ, है ना?
00:05:23आप तेज़ी से आगे बढ़ेंगे। आप कम कोड लिखेंगे और आपको नियमों को डेटाबेस में नीचे धकेल कर स्ट्रॉन्गर सिक्योरिटी डिफॉल्ट्स मिलेंगे।
00:05:32अब, यदि आपके ऐप में वास्तव में जटिल लॉजिक है, तो आप अभी भी ऊपर एक पतली बैकएंड लेयर चाह सकते हैं, कुछ छोटा, एज केसेस के लिए एक BFF लेयर।
00:05:40लेकिन तब भी, Postgres नीचे का अधिकांश भारी काम कर सकता है। तो मुख्य बात यह है: PostgREST आपको तेज़ी से शिप करने, बेहतर सुरक्षित करने और कम मेंटेन करने देता है।
00:05:50आपका डेटाबेस वास्तविक डेटा का स्रोत बन जाता है, और आपका API एक अलग सिस्टम बनने के बजाय उसी से निकल आता है।
00:05:58यदि आप इस तरह के कोडिंग टूल्स और टिप्स का आनंद लेते हैं, तो Better Stack चैनल को सब्सक्राइब ज़रूर करें। हम आपसे दूसरे वीडियो में मिलेंगे।

Key Takeaway

PostgREST पारंपरिक बैकएंड लेयर्स को हटाकर सीधे डेटाबेस स्कीमा और RLS नीतियों से एक सुरक्षित, स्केलेबल REST API बनाकर विकास की गति को बढ़ाता है।

Highlights

PostgREST बैकएंड कोड के 80% हिस्से को खत्म करके सीधे Postgres डेटाबेस को REST API में बदल देता है।

GitHub पर 26,000 से अधिक स्टार्स के साथ यह टूल Supabase के मुख्य इंजन के रूप में प्रोडक्शन स्केल पर काम करता है।

सुरक्षा के लिए रो लेवल सिक्योरिटी (RLS) का उपयोग होता है, जिससे ऑथेंटिकेशन लॉजिक सीधे डेटाबेस के अंदर ही रहता है।

Docker Compose के माध्यम से केवल तीन कंटेनर्स—Postgres, PostgREST और Swagger UI—का उपयोग करके एक पूर्ण API सेटअप तैयार हो जाता है।

यह सिस्टम CRUD ऑपरेशंस, फ़िल्टरिंग, सॉर्टिंग और पेजिनेशन के साथ-साथ ऑटो-जेनरेटेड Swagger UI दस्तावेज़ भी प्रदान करता है।

Timeline

पारंपरिक बैकएंड विकास की समस्याएँ

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

API बनाने की पारंपरिक प्रक्रिया में डेवलपर्स को डेटाबेस से बात करने के लिए बार-बार वही बुनियादी कोड लिखना पड़ता है। एक ही सिस्टम के लिए अलग-अलग लेयर्स पर एक्सेस रूल्स और रिस्पॉन्स हैंडलिंग को परिभाषित करने से रखरखाव कठिन हो जाता है। PostgREST इन सभी मध्यवर्ती परतों को हटाकर सीधे स्कीमा को API में बदल देता है।

त्वरित सेटअप और कार्यान्वयन प्रक्रिया

  • Docker Compose का उपयोग करके बिना किसी मैन्युअल डिपेंडेंसी के सर्वर सेटअप किया जाता है।
  • SQL के माध्यम से रो लेवल सिक्योरिटी (RLS) का उपयोग करके एक्सेस कंट्रोल सीधे टेबल स्तर पर लागू होता है।
  • बिना किसी ORM या कंट्रोलर के डेटाबेस टेबल से सीधे JSON रिस्पॉन्स प्राप्त होता है।

सेटअप के लिए केवल Postgres, PostgREST और Swagger UI के कंटेनर्स की आवश्यकता होती है। एक साधारण todos टेबल बनाकर और SQL पॉलिसियों के माध्यम से सुरक्षा नियम तय करके API तुरंत तैयार हो जाता है। इसमें ऑथेंटिकेशन लॉजिक को बैकएंड कोड के बजाय सीधे डेटाबेस इंजन के भीतर रखा जाता है।

स्वचालित फीचर्स और इंटरैक्टिव दस्तावेज़

  • Curl कमांड के जरिए सीधे डेटाबेस से JSON फॉर्मेट में डेटा प्राप्त किया जाता है।
  • फ़िल्टरिंग, सॉर्टिंग और नए डेटा को पोस्ट करने की सुविधा बिना किसी अतिरिक्त कोडिंग के उपलब्ध है।
  • Swagger UI के माध्यम से पूर्ण CRUD ऑपरेशंस के लिए इंटरैक्टिव API दस्तावेज़ स्वचालित रूप से बन जाते हैं।

उपयोगकर्ता एक मिनट से भी कम समय में पूर्ण कार्यशील API प्राप्त कर सकते हैं जिसमें पेजिनेशन और जटिल फ़िल्टरिंग शामिल है। Swagger UI डेवलपर्स को एंडपॉइंट्स टेस्ट करने और स्कीमा को विज़ुअली एक्सप्लोर करने की अनुमति देता है। डेटाबेस और API के बीच कोई अनुवाद परत न होने के कारण डेटा का तालमेल हमेशा सटीक रहता है।

ट्रेड-ऑफ़ और उपयोग के मामले

  • पारंपरिक बैकएंड में मेंटेनेंस वर्क एक टैक्स की तरह है जो वास्तविक प्रोडक्ट विकास को धीमा करता है।
  • भारी रो लेवल सिक्योरिटी (RLS) के उपयोग से डेटाबेस लोड बढ़ सकता है।
  • अत्यधिक जटिल लॉजिक के लिए SQL फंक्शन्स या एक पतली 'BFF' बैकएंड लेयर की आवश्यकता हो सकती है।

PostgREST उन प्रोजेक्ट्स के लिए आदर्श है जो प्रोटोटाइप, MVP या डेटा-केंद्रित हैं। यद्यपि यह बहुत तेज़ है, लेकिन डेवलपर्स को जटिल व्यावसायिक लॉजिक को संभालने के लिए व्यूज़ और SQL फंक्शन्स का उपयोग करना पड़ता है। यह दृष्टिकोण मेंटेनेंस कोड को कम करता है और सुरक्षा को डेटा के करीब लाकर सिस्टम को मजबूत बनाता है।

Community Posts

View all posts