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కి దారి తీస్తుందని మాకు నమ్మకం ఉంది.