Architecture Decision Record

Active theme: Light

← דוגמאות לרשומות החלטה

רשומת החלטה ארכיטקטונית: API עם JSON לעומת gRPC

מצב

התקבלה

הקשר

אנו מתכננים API לשירות חדש שישמש לקוחות רבים. שקלנו שתי אפשרויות למימוש ה-API: שימוש ב-JSON מעל HTTP או שימוש ב-gRPC.

JSON מעל HTTP היא גישה נפוצה לבניית API, והיא נתמכת בשפות תכנות ובמסגרות רבות. הגישה הזו פשוטה, קלת משקל וקלה להבנה, ולכן היא בחירה טובה לפרויקטים רבים. עם זאת, היא יכולה להיות פחות יעילה מאפשרויות אחרות, במיוחד בטיפול בכמויות גדולות של נתונים.

gRPC, לעומת זאת, היא טכנולוגיה חדשה יותר שמציעה דרך יעילה יותר לבניית API. היא משתמשת בסריאליזציה בינארית להעברת נתונים, שיכולה להיות מהירה וקומפקטית יותר משימוש ב-JSON. gRPC תומכת גם בסטרימינג דו-כיווני, ולכן היא בחירה טובה ליישומי זמן אמת.

החלטה

לאחר ששקלנו את היתרונות והחסרונות של שתי האפשרויות, החלטנו להשתמש ב-gRPC עבור ה-API שלנו. אף ש-JSON מעל HTTP היא אפשרות פשוטה יותר, אנו מאמינים ש-gRPC תספק פתרון יעיל וניתן להרחבה יותר לשירות שלנו. אנו צופים גם שה-API שלנו יטפל בכמות גדולה של נתונים, וסריאליזציה בינארית של gRPC תהיה יעילה יותר למקרה השימוש הזה.

בנוסף, אנו מאמינים שתמיכת gRPC בסטרימינג דו-כיווני תועיל ליישומי זמן אמת שנפתח בעתיד.

השלכות

בבחירה ב-gRPC נצטרך להשתמש בקבוצה שונה של כלים וספריות לבניית ה-API שלנו בהשוואה לשימוש ב-JSON מעל HTTP. ייתכן שיידרשו זמן ומאמץ נוספים כדי ללמוד וליישם את הטכנולוגיות האלה. בנוסף, לקוחות שירצו להשתמש ב-API שלנו יצטרכו להשתמש בספריות תואמות gRPC, שאולי אינן נתמכות באותה מידה כמו ספריות JSON מעל HTTP.

עם זאת, אנו מאמינים שיתרונות השימוש ב-gRPC עולים על החסרונות האפשריים האלה, ואנו בטוחים שההחלטה הזו תוביל ל-API יעיל וניתן להרחבה יותר.