API प्रबंधन
gRPC और REST: API डिज़ाइन में gRPC, OpenAPI, REST को समझना और उनका उपयोग कब करें
- API डिज़ाइन मॉडल: API डिज़ाइन में मुख्य रूप से RPC और REST, इन दो मॉडलों का उपयोग किया जाता है। अधिकांश आधुनिक API, HTTP प्रोटोकॉल के आधार पर लागू किए जाते हैं।
- gRPC: HTTP 2.0 को ट्रांसपोर्ट प्रोटोकॉल के रूप में उपयोग करने वाली RPC API इम्प्लीमेंटेशन तकनीक। Google आदि में RPC और HTTP के विचारों को मिलाने वाले API का व्यापक उपयोग होता है।
- HTTP के तीन प्रमुख उपयोग तरीके:
- REST: क्लाइंट सर्वर द्वारा दिए गए URL का जैसा है वैसा उपयोग करता है, और URL फ़ॉर्मेट को समझने की आवश्यकता नहीं होती।
- gRPC: HTTP/2 का उपयोग करता है, लेकिन HTTP API डिज़ाइनर के सामने प्रकट नहीं होता।
- OpenAPI: क्लाइंट URL path template का उपयोग करके API को कॉल करता है।
REST
- विशेषताएँ: क्लाइंट को URL फ़ॉर्मेट समझने की आवश्यकता नहीं होती, और URL API स्पेसिफिकेशन का हिस्सा नहीं होता।
- फायदे: इसमें स्थिरता, एकरूपता और सार्वभौमिकता जैसे वेब के लाभ मिलते हैं। entity-oriented model अधिक सरल और समझने में आसान होता है।
gRPC
- विशेषताएँ: HTTP/2 का उपयोग होता है, लेकिन HTTP की बारीकियाँ छिपी रहती हैं। क्लाइंट procedures को कॉल करके और parameters पास करके API का उपयोग करता है।
- फायदे: client-side programming libraries को आसानी से जनरेट किया जा सकता है, और performance अच्छा होता है।
OpenAPI
- विशेषताएँ: API को कॉल करने के लिए URL path template का उपयोग किया जाता है, इसलिए क्लाइंट को URL फ़ॉर्मेट समझना होता है।
- फायदे: केवल मानक HTTP तकनीकों से API तक पहुँचा जा सकता है। client-side programming libraries भी जनरेट की जा सकती हैं।
gRPC और OpenAPI की तुलना
- समानताएँ: दोनों का उपयोग RPC interface definition language (IDL) के रूप में किया जा सकता है।
- अंतर: gRPC, HTTP की बारीकियों को छिपाता है, जबकि OpenAPI, HTTP की बारीकियों को सामने लाता है।
REST के फायदे
- entity-oriented model: यह अधिक सरल, समझने में आसान और समय के साथ अधिक स्थिर रहता है।
OpenAPI का उपयोग कैसे करें
- path definition: paths और HTTP methods का उपयोग करके API को परिभाषित किया जाता है।
OpenAPI के फायदे और नुकसान
- फायदे: यह RPC मॉडल के समान होने के कारण programmers के लिए परिचित है। इसे HTTP requests से मैप किया जा सकता है।
- नुकसान: HTTP की बारीकियों को डिज़ाइन करने में काफी मेहनत लगती है।
gRPC के फायदे
- सरल इम्प्लीमेंटेशन: server-side implementation सरल होता है, और client-side libraries आसानी से जनरेट की जा सकती हैं।
- performance: binary payload का उपयोग होने से यह अधिक कुशल है।
gRPC के नुकसान
- विशेष सॉफ़्टवेयर की आवश्यकता: क्लाइंट और सर्वर, दोनों को विशेष सॉफ़्टवेयर चाहिए।
- proxy functionality की सीमा: HTTP API के विपरीत, proxy में functionality को बढ़ाना या बदलना कठिन होता है।
निष्कर्ष
- API डिज़ाइन का चयन: REST, OpenAPI, gRPC — प्रत्येक के फायदे और नुकसान को ध्यान में रखकर चयन करना चाहिए।
- gRPC उपयोग करते समय ध्यान देने योग्य बातें: जब क्लाइंट को gRPC तकनीक अपनाने की आवश्यकता न हो, और API आंतरिक हो, तब यह लाभदायक होता है।
1 टिप्पणियां
Hacker News राय
इस बात का अफसोस है कि gRPC सीखा; debugging और configuration tuning में बहुत समय लगा
लंबे समय से API बनाते आए हैं, और gRPC तथा HTTP/REST दोनों का उपयोग किया है
FAANG में काम करने का अनुभव है, और लगता है कि internal service routing में gRPC उपयोगी है
जब तक bidirectional streaming नहीं करनी हो, gRPC समय की बर्बादी लगता है
gRPC का उपयोग करने वाले एक project में performance के कारण इसे अपनाया था, लेकिन बाद में JSON API पर switch किया
connectrpc का उपयोग करते हुए gRPC की समस्याओं को हल किया जा रहा है
लगता है कि gRPC में development experience, REST से खराब है
Roy Fielding ने कहा कि REST API के लिए सिर्फ शुरुआती URI और standardized media types जानना पर्याप्त है
data center के भीतर gRPC का उपयोग पसंद नहीं है
लगा कि Google के बाहर gRPC तक पहुँचना कठिन है