GRPC vs REST لطفا راهنمایی بفرمایید

سلام و عرض احترام
یک مشتری داریم که به خاطر کندی برنامه میخواد برنامه اش را بازنویسی کنه
و به شدت تاکید داره که بین بک اند و فرانت اند هم از grpc استفاده بشه
بک اند با golang و فرانت با Dart Flutter هست
از نظر سخت افزار هم میگه مشکلی نداره و میگه همه سیستم ها HTTP2 را پشتیبانی میکنند.
به نظر شما کار درستی هست؟

سلام وقت بخیر
در مورد استفاده از REST یا GRPC واقعیتش فکر نمیکنم مساله کندی رو با این موضوع بشه حل کرد. در واقع اول باید علت کندی رو جویا بشید. چون درسته که GRPC داره از HTTP2 استفاده میکنه اما عملا شما با REST هم HTTP2 رو دارید چون gateway و مرورگرها پشتیبانی میکنن.
من کلا موافقم اگه کلاینت تحت وب ندارید و برنامه موبایل هست ارتباط ها جای REST با grpc باشه که به صورت خودکار یه document خیلی خوب هم از ارتباطات به شما میده، اما خب راه حل مستندسازی REST API هم زیاده هر چند که زحمت اضافه داره.
بنابراین واقعیت ش با این داده هایی که نوشتی نمیشه گفت تصمیم درستی هست یا خیر. باید اول علت کندی رو جویا بشید.

ممنونم حسین جان

مشکل کندی از مقدار زیاد تبادل دیتا هست
و فکر میکنند چون grpc از rest سریعتره گزینه مناسب تری هست
البته علاوه بر برنامه موبایل و دسکتاپ ، کلاینت وب هم دارند ولی درون سازمانی هست و تقریبا همه مرورگرهاشون http2 را پشتیبانی میکنند.

الان اگر از grpc استفاده کنیم بجز اینکه کلاینت های تحت وب حتما باید http2 را پشتیبانی کنند آیا امکان داره که مشکل یا محدودیت دیگه ایی هم به وجود بیاد؟

(شاید ربطی به موضوع نداشته باشه ، راستش توی فکرم بود برای گزارش ها هم از grphql استفاده کنیم)

من فکر نمیکنم تغییر به grpc مشکل رو حل کنه و یه سری مشکل دیگه رو هم اضافه میکنه. اگه حجم داده زیاده ببینید چه راه حل جایگزینی میتونید استفاده کنید که مشکل لود داده کمتر بشه. مثلا داده رو کش کنید یا حتی سمت کلاینت ذخیره بشه و فقط آپدیت ها بره براش، یا راه حل های دیگه که بسته به موضوع بیزینسی ممکنه کمک کنه.

1 پسندیده

ممنونم حسین جان
پس کلا grpc را می‌گذاریم برای بین سرویس ها
و rest را برای بین کلاینت و سرویس
و باید دنبال راه حل دیگری برای افزایش سرعت باشیم
تندرست و پیروز باشید استاد

بله دقیقا، پیشنهاد من هم همینه.

1 پسندیده

جسارتا دیتابیس مورد استفاده چی هست؟ مهمه که نحوه ارتباط با دیتابیس اوکی باشه. ایندکسینگ + کانکشن پول + نحوه سلکت دیتا در سمت کد متناسب با ایندکس ها + کش اگه دیتا خارج از حد توان دیتابیس باشه کلاسترینگ و شاردینگ