Architecture Decision Record

Active theme: Light

← निर्णय नोंद उदाहरणे

आर्किटेक्चर निर्णय नोंद: JSON किंवा gRPC वापरणारा API

स्थिती

स्वीकारले

संदर्भ

आम्ही एका नव्या सेवेसाठी API डिझाइन करत आहोत जी अनेक क्लायंट्स वापरतील. API अंमलात आणण्यासाठी आम्ही दोन पर्यायांचा विचार करत आहोत: HTTP वर JSON वापरणे किंवा gRPC वापरणे.

HTTP वर JSON हा API बनवण्याचा व्यापकपणे वापरला जाणारा दृष्टिकोन आहे आणि तो अनेक प्रोग्रामिंग भाषा व फ्रेमवर्कमध्ये समर्थित आहे. हा दृष्टिकोन साधा, हलका आणि समजण्यास सोपा आहे, ज्यामुळे तो अनेक प्रकल्पांसाठी चांगला पर्याय ठरतो. तथापि, इतर पर्यायांपेक्षा तो कमी कार्यक्षम असू शकतो, विशेषतः मोठ्या प्रमाणातील डेटा हाताळताना.

gRPC, दुसरीकडे, एक नवे तंत्रज्ञान आहे जे API बनवण्याचा अधिक कार्यक्षम मार्ग देते. ते डेटा हस्तांतरित करण्यासाठी बायनरी सीरियलायझेशन वापरते, जे JSON वापरण्यापेक्षा जलद आणि अधिक संक्षिप्त असू शकते. gRPC द्विदिशात्मक स्ट्रीमिंगलाही समर्थन देते, ज्यामुळे ते रिअल-टाइम अनुप्रयोगांसाठी चांगला पर्याय ठरते.

निर्णय

दोन्ही पर्यायांचे फायदे-तोटे विचारात घेतल्यानंतर, आम्ही आमच्या API साठी gRPC वापरण्याचा निर्णय घेतला आहे. HTTP वर JSON हा अधिक साधा पर्याय असला तरी, आम्हाला विश्वास आहे की gRPC आमच्या सेवेसाठी अधिक कार्यक्षम आणि प्रमाण वाढवता येणारा उपाय देईल. आमचा API मोठ्या प्रमाणात डेटा हाताळेल अशीही आमची अपेक्षा आहे, आणि gRPC चे बायनरी सीरियलायझेशन या वापरासाठी अधिक कार्यक्षम असेल.

याव्यतिरिक्त, आमचा विश्वास आहे की भविष्यात आम्ही विकसित करू शकणाऱ्या रिअल-टाइम अनुप्रयोगांसाठी gRPC चे द्विदिशात्मक स्ट्रीमिंगचे समर्थन फायदेशीर ठरेल.

परिणाम

gRPC निवडल्याने, HTTP वर JSON वापरण्याच्या तुलनेत आमचा API बनवण्यासाठी आम्हाला वेगळा साधने आणि लायब्ररींचा संच वापरावा लागेल. ही तंत्रज्ञाने शिकण्यासाठी आणि अंमलात आणण्यासाठी यासाठी अतिरिक्त वेळ आणि प्रयत्न लागू शकतात. शिवाय, आमचा API वापरू इच्छिणाऱ्या क्लायंट्सना gRPC-सुसंगत लायब्ररी वापराव्या लागतील, ज्यांना HTTP वर JSON लायब्ररींइतके व्यापक समर्थन नसू शकते.

तथापि, आमचा विश्वास आहे की gRPC वापरण्याचे फायदे या संभाव्य तोट्यांपेक्षा जास्त आहेत, आणि हा निर्णय अधिक कार्यक्षम आणि प्रमाण वाढवता येणारा API देईल याची आम्हाला खात्री आहे.