Architecture Decision Record

Active theme: Light

← Mifano ya rekodi za maamuzi

Rekodi ya Uamuzi wa Usanifu: API kwa JSON au gRPC

Hali

Imekubaliwa

Muktadha

Tunabuni API kwa huduma mpya itakayotumiwa na wateja wengi. Tumekuwa tukifikiria chaguo mbili za kutekeleza API: kutumia JSON juu ya HTTP au kutumia gRPC.

JSON juu ya HTTP ni mbinu inayotumika sana kujenga API, na inasaidiwa na lugha na mifumo mingi ya programu. Mbinu hii ni rahisi, nyepesi, na rahisi kuelewa, na kuifanya kuwa chaguo zuri kwa miradi mingi. Hata hivyo, inaweza kuwa na ufanisi mdogo kuliko chaguo zingine, hasa inapokuja kushughulikia kiasi kikubwa cha data.

gRPC, kwa upande mwingine, ni teknolojia mpya inayotoa njia yenye ufanisi zaidi ya kujenga API. Inatumia userialishaji wa kibinari kuhamisha data, ambao unaweza kuwa wa haraka na thabiti zaidi kuliko kutumia JSON. gRPC pia inasaidia utiririshaji wa pande mbili, na kuifanya kuwa chaguo zuri kwa programu za wakati halisi.

Uamuzi

Baada ya kuzingatia faida na hasara za chaguo zote mbili, tumeamua kutumia gRPC kwa API yetu. Ingawa JSON juu ya HTTP ni chaguo rahisi zaidi, tunaamini kwamba gRPC itatoa suluhisho lenye ufanisi na linaloweza kupanuka zaidi kwa huduma yetu. Pia tunatarajia kwamba API yetu itashughulikia kiasi kikubwa cha data, na userialishaji wa kibinari wa gRPC utakuwa na ufanisi zaidi kwa kisa hiki cha matumizi.

Zaidi ya hayo, tunaamini kwamba usaidizi wa gRPC kwa utiririshaji wa pande mbili utakuwa wa manufaa kwa programu za wakati halisi ambazo tunaweza kuziunda siku zijazo.

Matokeo

Kwa kuchagua gRPC, tutahitaji kutumia seti tofauti ya zana na maktaba kujenga API yetu ikilinganishwa na kutumia JSON juu ya HTTP. Hii inaweza kuhitaji muda na juhudi za ziada kujifunza na kutekeleza teknolojia hizi. Zaidi ya hayo, wateja wanaotaka kutumia API yetu watahitaji kutumia maktaba zinazoendana na gRPC, ambazo huenda hazisaidiwi kwa upana kama maktaba za JSON juu ya HTTP.

Hata hivyo, tunaamini kwamba manufaa ya kutumia gRPC yanazidi mapungufu haya yanayowezekana, na tuna uhakika kwamba uamuzi huu utasababisha API yenye ufanisi na inayoweza kupanuka zaidi.